0

現在、Linux の Jetty 7.4.5.v20110725 で実行している Java Web アプリケーションで問題に直面しています。静的コンテンツを提供する Web アプリケーションで、開始タイムスタンプから数日後にファイル記述子が不足しています。useFileMappedBuffer = true( in webDefaults.xml ) で jetty サーバーを起動しています。jdk1.6.0_30 を使用しています。この問題を解決する方法について何か提案があればお知らせください。

この問題は、useFileMappedBuffer = false (webDefaults.xml 内) の場合には発生しないことに注意してください。

4

1 に答える 1

0

次回アプリケーションのタイムスタンプが不足している場合は、開いているファイルと、開いている接続が問題を引き起こしているかどうかを確認してください。

を呼び出して、開いているファイルを一覧表示してみてください (私はそれだと思いますlsof -pが、気まぐれに書いているので、lsof のマンページを参照してください):

lsof -p <jettypid>

これにより、jetty プロセスによって開かれるファイルが表示されます。おそらくすでに閉じられているはずのファイルなどを探します。

次に、次のことを行います。

netstat -an 

これにより、確立されたネットワーク接続が表示されます。CLOSE_WAIT接続が適切に閉じられていないことを示す状態または同様の接続が多数あるかどうかを確認します。

また、システム全体の OS 制限を次の方法で確認してください。

ulimit -a

1 つのプロセスで開くことができるファイル記述子の数が表示されます。トラフィックが多く、かなり一般的なデフォルト値の 1024 max fd を使用しているサイトがある場合は、それを上げる必要があるかもしれません。トラフィックが問題だと思われる場合は、このガイドをご覧ください: http://wiki.eclipse.org/Jetty/Howto/High_Load

ただし、問題は数日後にのみ発生すると述べました。これは通常、接続やファイル リソースなどが適切に閉じられていないことを示します。

上記のコマンドの出力をどうすればよいかわからない場合は、自由に貼り付けてください。

問題とは別に、最新の jetty 7.x にアップグレードすることをお勧めします。

于 2012-06-12T18:02:57.670 に答える