この問題に関連するすべてのStackExchangeの回答に従っているにもかかわらず、Ubuntu 14.04で非ルートユーザーのnofile
制限を増やすことはできないようです。これまでのところ:
$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000
$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required pam_limits.so
/etc/pam.d/common-session-noninteractive:session required pam_limits.so
$ cat /proc/sys/fs/file-max
101232
再起動、ログイン、および:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
そこにstillどういうわけか非rootユーザーの最大4096の制限があるようです。
Ubuntu 14.04を使用して、説明されているハード制限を取得しました:
user@notebook:~$ ulimit -Hn 4096
Ulimitを使用して値を下げることはできますが、質問で説明されているように値を上げることはできません。 ulimitのマニュアルに記載されているとおり:
ルートのみがハード制限を増やすことができます
そこで、次のように/etc/security/limits.conf
の上限を設定しようとしました。
user hard nofile 9999
ssh localhost -l user
のような新しいログインで新しい制限が与えられました:
user@notebook:~$ ulimit -Hn 9999
これがあなたにも役立つことを願っています。
これ 記事 、私はあなたの問題に対処すると思います。
基本的に、ulimitコマンドを使用して、使用可能なリソースを増やす必要があります。
例えば:
次のコマンドコマンドを使用して、開いているファイル記述子の最大数を表示します。
cat /proc/sys/fs/file-max
ハード値とソフト値を表示するには、次のようにコマンドを発行します。
# ulimit -Hn
# ulimit -Sn
HttpdまたはOracleユーザーのハード値とソフト値を表示するには、次のようにコマンドを発行します。
# su - username
最大ファイル数を修正するには、次のようにカーネル変数/ proc/sys/fs/file-maxに新しい値を設定して、開いているファイルの最大数を増やすことができます(ルートとしてログイン):
# sysctl -w fs.file-max=100000
上記のコマンドは、制限を100000ファイルに強制します。再起動後に設定がそのまま残るように、/etc/sysctl.conf
ファイルを編集して次の行を配置する必要があります。これを行うには、次のように構成ディレクティブを追加します。
fs.file-max = 100000
ファイルを保存して閉じます。変更を有効にするか、次のコマンドを入力するには、ユーザーはログアウトしてから再度ログインする必要があります。
# sysctl -p
次のコマンドで設定を確認します。
# cat /proc/sys/fs/file-max
または:
# sysctl fs.file-max
上記の手順はシステム全体のファイル記述子(FD)の制限を設定しますが、/etc/security/limits.conf
を編集して/etc/security/limits.conf
ファイルを編集し、次のように制限を設定することにより、httpd
(または他のユーザー)ユーザーを特定の制限に制限できます:
httpd soft nofile 4096
httpd hard nofile 10240
次に、それらを確認します。
# su - httpd
$ ulimit -Hn
$ ulimit -Sn
他のLinuxディストリビューションで問題が発生した場合は、/etc/pam.d/login
を確認し、pam_limits.so
が有効になっていることを確認してください。
session required pam_limits.so
サービスの場合、/etc/systemd/system/{ServiceName}.service
add LimitNOFILE=65536
で制限を設定することができます。