Linuxでは、オープンファイル数の上限を変更することができます。 この数は、ulimitコマンドを使用して変更することができます。 これは、シェルまたはそれによって起動されるプロセスで利用可能なリソースを制御する能力を付与します。
Read Also: Linux の実行プロセスの制限をユーザーごとに設定する
この短いチュートリアルでは、開いているファイルおよびファイルの記述の現在の制限を確認する方法を紹介しますが、これを行うには、システムの root アクセスが必要です。
最初に、Linux システムで開いているファイル記述子の最大数を調べる方法を見てみましょう。
Find Linux Open File Limit
値は、
# cat /proc/sys/fs/file-max818354
表示される数字は、ユーザーがログイン セッションごとに開くことができるファイル数を示しています。
たとえば、私の CentOS サーバーでは、制限は 818354 に設定され、私が自宅で実行している Ubuntu サーバーでは、デフォルトの制限は 176772 に設定されています。
Hard Limit と Soft Limit を確認したい場合は、以下のコマンドを使用します:
Check Hard Limit in Linux
# ulimit -Hn4096
Check Soft Limits in Linux
# ulimit -Sn1024
異なるユーザーの Hard と Soft 値を確認するには、確認したいユーザーに su で切り替えれば良いのです。
例:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
How to Check System wide File Descriptors Limits in Linux
サーバーを実行している場合、アプリケーションによっては、開いたファイル記述子に対してより高い制限が必要になることがあります。
Linux では、カーネル指令 fs.file-max
を編集することにより、開かれたファイルの制限を増やすことができます。 そのためには、sysctl ユーティリティを使用します。
Sysctl は、実行時にカーネル・パラメータを構成するために使用されます。
たとえば、オープンファイルの制限を 500000 に増やすには、root で次のコマンドを使用します:
# sysctl -w fs.file-max=500000
オープンファイルの現在の値は次のコマンドで確認できます:
$ cat /proc/sys/fs/file-max
上記のコマンドでは、行った変更は次の再起動までしか有効でありません。 恒久的に適用したい場合は、次のファイルを編集する必要があります:
# vi /etc/sysctl.conf
次の行を追加します:
fs.file-max=500000
もちろん、必要に応じて数字を変更することができます。 変更を確認するには、
# cat /proc/sys/fs/file-max
一度ログアウトして、再度ログインする必要があります。 制限をすぐに適用したい場合は、次のコマンドを使用できます:
# sysctl -p
Set User Level Open File limits in Linux
上記の例では、グローバルな制限を設定する方法を示しましたが、ユーザーごとに制限を適用したい場合もあります。 そのためには、ユーザー root として、次のファイルを編集する必要があります:
# vi /etc/security/limits.conf
Linux 管理者であれば、このファイルとその内容に関して熟知していることをお勧めします。 異なるレベルでユーザー/グループを制限することにより、システムリソースの管理に関して大きな柔軟性を提供するので、その中のすべてのコメントを読んでください。
追加すべき行は次のパラメーターを取ります:
<domain> <type> <item> <value>
以下は、ユーザー marin に対してソフトおよびハード制限を設定する例です:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Final thoughts
この短い記事では、開いたファイルの最大数に対するグローバルおよびユーザー レベルの制限を確認および設定する方法の基本例を示しました。
今回は表面をさらったに過ぎませんが、/etc/sysctl.conf および /etc/security/limits.conf についてより詳しく見て、読んで、その使用方法を学ぶことを強くお勧めします。 これらは、いつかあなたにとって大きな助けとなることでしょう。