/etc/security/limits.conf と /proc/$PID/limits の違い

/etc/security/limits.conf と /proc/$PID/limits の違い

私の構成/etc/security/limits.conf

* soft nofile 60000
* hard nofile 60000

Ubuntuでnginxを実行しています。 Ubuntuを再起動するとulimit -n60000です。

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次の行を使用してファイルセクションに追加します。systemdsystemctl edit nginx.service[Service]

LimitNOFILE=60000:60000

systemctl edit some.service元のサービスファイルはツリーから自動的にインポートされ、変更され[/usr]/lib/systemdたバージョンは下に配置されます/etc/systemd。のすべてのファイルは、/etc/systemdツリー内の同じ名前のすべてのファイルを上書きします[/usr]/lib/systemd

さらに、サービス構成は自動的に再ロードされるため、systemctl daemon-reload手動で行う必要はありません。

おすすめ記事