web-dev-qa-db-ja.com

/etc/sysctl.confと/etc/security/limits.confのオープンファイル制限の設定の違いは何ですか?

開いているファイルの許可数を増やす2つの方法を読みました(問題がある場合は、ルートの変更を試みています)。

1つの方法は、/etc/security/limits.confの設定を次のように更新することです。

*                soft    nofile          500000

*                hard    nofile          500000

root             soft    nofile          500000

root             hard    nofile          500000

アクティブなシェルの設定を行うには、ulimit -n 500000を実行するだけでよく、再起動やログアウト/ログインは必要ありませんが、サービスの再起動(?)が必要になる場合があります。


もう1つのオプションは、/etc/sysctl.confを更新することです。

echo 'fs.file-max = 500000' >> /etc/sysctl.conf

アクティブなシェルの設定を行うには、sysctl -pを実行し、sysctl fs.file-maxで確認できます。

だから私の質問は、違いは何ですか?ありますか?私はUbuntu 14.04.2 LTSにいます

7
MrDuk

違いはスコープと、それがどのように適用されるかです。 sysctlを介して設定されたオープンファイルの制限はシステム全体に適用されますが、/etc/security/limits.confを介して設定された制限はそこで指定された条件を満たすものにのみ適用されます。その他の主な違いは、/etc/security/limits.conf制限がulimitを介して適用されるため、sysctl制限が本質的にカーネル自体にメモリ割り当て制限を設定する一方で、より簡単に変更できることです。

原則として、ワイルドカード一致でグローバル制限を設定している場合でも、ほとんどの場合/etc/security/limits.confを使用することをお勧めします。これは、多少信頼性が高く、ulimit制限にヒットすると、通常、より適切に失敗します。カーネルのメモリ割り当て制限に達するよりも。

9