アプリケーションにソフト制限が設定されていません。 [ulimit]

アプリケーションにソフト制限が設定されていません。 [ulimit]

私のアプリケーションの開いているファイルの最大数を増やそうとしましたが失敗しました。ハード制限は正しく設定されていますが、ソフト制限はデフォルトの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]
}

他の人が同じ問題に直面する場合に備えて、この質問/回答を残してください。

おすすめ記事