1. ホーム
  2. linux

[解決済み】Linuxのオープンファイル数制限を変更するには?[クローズド]。

2022-04-10 11:44:22

質問

<余談
閉じた。 この質問は わき . 現在、回答は受け付けておりません。

<パス

この質問を改善したいですか? 質問を更新する だから オントロピ Stack Overflowのために。

クローズド 9年前 .

アプリケーションを実行すると、以下のようなエラーが発生することがあります。 too many files open .

実行中 ulimit -a は、上限が1024であることを報告します。 どうすれば1024以上の制限をかけることができますか?

編集 ulimit -n 2048 を実行すると、パーミッションエラーが発生します。

解決方法は?

を実行してみてください。 ulimit -n 2048 . これは現在のシェルの制限をリセットするだけで、指定する数はハードリミットを超えてはいけません。

各オペレーティングシステムは、設定ファイルに異なるハードリミットを設定しています。 例えば、Solaris のハードオープンファイル制限は、起動時に /etc/system から設定することができます。

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

OS Xでは、これと同じデータを/etc/sysctl.confに設定する必要があります。

kern.maxfilesperproc=166384
kern.maxfiles=8192

Linuxでは、これらの設定は/etc/security/limits.confにあることが多いようです。

制限には2種類あります。

  • ソフト 制限とは、単に現在適用されている制限のことです。
  • ハード は、ソフトリミットを設定することによって、超えることができない最大値をマークします。

ハードリミットはrootのみが変更可能ですが、ソフトリミットはどのユーザーでも設定可能です。 リミットはプロセスのプロパティです。子プロセスが作成されたときに継承されます。したがって、システム全体の制限は init スクリプトでシステムの初期化時に設定し、ユーザー制限は pam_limits などでユーザーのログイン時に設定すべきです。

マシンの起動時にデフォルトが設定されていることがよくあります。 そのため、個々のシェルで ulimit をリセットしても、再起動すると前の値にリセットされてしまうことがあります。 デフォルトを変更したい場合は、ブートスクリプトを grep して ulimit コマンドの存在を確認するとよいでしょう。