私の構成/etc/security/limits.conf
は
* soft nofile 60000
* hard nofile 60000
Ubuntuでnginxを実行しています。 Ubuntuを再起動するとulimit -n
60000です。
cat /proc/`ps -elf | grep nginx | grep 'master process' | awk '{print $4}'`/limits| grep 'open files'
答えは1024ですが、なぜ60000ではないのですか?
答え1
/etc/security/limits.conf
ログインするとPAMモジュールから読み取られますpam_limits.so
。
ただし、起動時にnginxが起動するとログインプロセスが実行されないため、PAMはnginxプロセスまたはその親エントリを無制限に変更する機会を得ません。
nginx
スクリプトから起動する場合は、スクリプトに ulimit コマンドを追加する必要があります。
ulimit -H -n 60000
ulimit -S -n 60000
.serviceファイルで始まった場合は、nginx
次の行を使用してファイルセクションに追加します。systemd
systemctl edit nginx.service
[Service]
LimitNOFILE=60000:60000
systemctl edit some.service
元のサービスファイルはツリーから自動的にインポートされ、変更され[/usr]/lib/systemd
たバージョンは下に配置されます/etc/systemd
。のすべてのファイルは、/etc/systemd
ツリー内の同じ名前のすべてのファイルを上書きします[/usr]/lib/systemd
。
さらに、サービス構成は自動的に再ロードされるため、systemctl daemon-reload
手動で行う必要はありません。