私のアプリケーションの開いているファイルの最大数を増やそうとしましたが失敗しました。ハード制限は正しく設定されていますが、ソフト制限はデフォルトの1024のままです。
start() 関数の下に/etc/init.d/[application]
別のコマンドを実行する前に、次の 2 行があります。
ulimit -Sn 64512 2> /dev/null
ulimit -Hn 80896 2> /dev/null
ところで、以下の制限を確認してみると、/proc/[pid]/limits
ハード制限は80896ですが、ソフト制限は1024です。
/etc/security/limits.d/
アプリケーションはrootとして実行されるため、以下のエントリを含む新しい.confファイルを追加しました。
root soft nofile 64512
root hard nofile 80896
しかし、何も変わりません/proc/[pid]/limits
。
特定のアプリケーションの最大オープンファイル制限を永久に設定するには?
RHEL 6.10でテスト中です。
答え1
ユーザーおよびulimitプロセスのいくつかのパラメータを読み取った後(ここ)と@binarystaのコメントを読んで、ulimitのマニュアルページを読み続けながら、init.dメソッドはうまくいきますが、間違った順序で実行していることに気づきました。ハード制限は、ユーザーが自分のソフト制限を増やすことができる絶対最大値なので、実行時にハード制限より大きい場合、最初に設定されたソフト制限は無視されます。
だからこれをしないでください:
root soft nofile 64512
root hard nofile 80896
あなたはこれをしなければなりません:
root hard nofile 80896
root soft nofile 64512
もう一度注文が重要です。
だから/etc/init.d/[application]
:
start() {
ulimit -Hn 80896 2> /dev/null
ulimit -Sn 64512 2> /dev/null
[rest of start function]
}
restart() {
# only if restart() function does not call start()
ulimit -Hn 80896 2> /dev/null
ulimit -Sn 64512 2> /dev/null
[rest of restart function]
}
他の人が同じ問題に直面する場合に備えて、この質問/回答を残してください。