アプリケーションを実行すると、時々エラーが発生しますtoo many files open
。
制限が 1024 であるというレポートを実行ulimit -a
しています。制限を 1024 より大きくするにはどうすればよいですか?
ulimit -n 2048
権限エラーで結果を編集します。
アプリケーションを実行すると、時々エラーが発生しますtoo many files open
。
制限が 1024 であるというレポートを実行ulimit -a
しています。制限を 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 種類があります。
ソフト制限はすべてのユーザーが設定できますが、ハード制限はルートのみが変更できます。制限はプロセスのプロパティです。これらは子プロセスの作成時に継承されるため、システム全体の制限は init スクリプトでのシステムの初期化中に設定する必要があり、ユーザー制限は pam_limits などを使用してユーザー ログイン中に設定する必要があります。
多くの場合、マシンの起動時にデフォルトが設定されています。そのため、個々のシェルで ulimit をリセットしても、再起動時に以前の値にリセットされることがあります。デフォルトを変更したい場合は、存在する ulimit コマンドのブート スクリプトを grep することをお勧めします。
1)次の行をに追加します/etc/security/limits.conf
webuser hard nofile 64000
次に、webuserとしてログインします
su - webuser
2)webuser用に次の2つのファイルを編集します
を実行して.bashrcおよび.bash_profileファイルを追加します
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3)ログアウトしてから再度ログインし、変更が正しく行われたことを確認します。
$ ulimit -a | grep open
open files (-n) 64000
それで、彼らはブーム、ブームブームです。
一部のサービスが ulimits に陥っている場合、適切なコマンドをサービスの init-script に入れる方が簡単な場合があります。たとえば、Apache がレポートしている場合
[アラート] (11) リソースが一時的に利用できません: apr_thread_create: ワーカー スレッドを作成できません
ulimit -s unlimited
入れてみてください/etc/init.d/httpd
。これには、サーバーの再起動は必要ありません。