2009-07-15 8 views
1

私は最近Tomcatサーバーでエラーが発生しました。「開いているファイルが多すぎます」というエラーが発生し、サーバーのSSLコネクタに使用されているキーストアファイルを参照しています。誰がこれがどこから来ているのか分かりませんか?私たちのサーバーはかなりの数の接続を受け取りますが、最大許容接続数が150を超えた場合、サーバーは(何らかの理由で)起動しなくなります。 Tomcatにメモリ内のキーストアをキャッシュさせて、接続がファイルから繰り返し読み込む必要がないようにする方法はありますか?"Too many open files"がTomcatキーストアにあります

+1

どのOS /プラットフォームですか? –

+0

サーバはUbuntu 9.04 Server上で動作していますが、Tomcat 5.5はJDK 6 Update 5 VM上で動作しています。 –

+0

"lsof -utomcatprocessname"を実行して、tomcatを実行しているプロセスが開いたままになっているすべてのファイルをリストする必要があります。何が開いているのか驚くかもしれません。 – Photodeus

答えて

1

私はあなたがLinux上で動作していると仮定します。なぜなら、それが答えを得ているからです。

ulimit -n 

これはおそらく、Linux用の「通常」のユーザの制限である1024年を印刷します:

最初のステップは、開いているファイルのためのulimitをチェックし、シェル内のそれ高く設定しようとすることです。高い数字を設定してみてください:

ulimit -n 2048 

これが成功した場合は、素晴らしいです。あなたのログインスクリプトにそのコマンドを入れて、あなたは行かなくてはなりません。そうでない場合は、ユーザーごとの制限を増やす必要があります。 this documentによれば、編集したいファイルは/etc/security/limits.conf

です。ちなみに、Tomcatは同じファイルを読み続けるので、おそらくこれは表示されません。 JVMは通常、アプリケーションで使用されるすべてのJARファイルをオープン(およびメモリマップ)し、設定ファイルのオープンファイルハンドルも保持します。キーストアファイルを開くときに限界に達するだけです。

関連する問題