2010-12-15 14 views
3

私のWebアプリケーションは、Linux(CentOS)上で64ビットJava 6.0.23、Tomcat 6.0.29(Apache Portable Runtime 1.4.2)で動作しています。 TomcatのJAVA_OPTSには、長いガベージコレクションを防ぐのに役立つ-Xincgcが含まれています。TomcatでHTTPリクエストが失敗しました

アプリの負荷が高く断続的に障害が発生しているため、問題のトラブルシューティングをしたいと考えています。

症状は次のとおりです。非常に断続的に、HTTPクライアントはHTTPリクエストをWebアプリケーションに送信し、空の応答を返します。

アプリケーションはデータベースを使用しないため、JDBC接続では問題ありません。だから私はおそらくメモリ(おそらく長いガベージコレクション)、スレッドの不足、ファイル記述子の不足のいずれかであると考えています。

javamelodyを使用して、使用されているスレッドの数を表示しました。maxThreadsがスレッド不足にならないように設定されているようです。同様に、利用可能なファイル記述子の数は非常に多く設定されています。

アプリは大量のメモリを使用します。記憶のように思えるかもしれませんが、おそらくここでの犯人か、それとも私が見落としているかもしれないことがありますか?

私の主な混乱は、なぜガベージコレクションがHTTP要求が失敗する原因になるのかと思います。直感的に、私は長いガーベジコレクションによってHTTP要求に長い時間がかかることがあると推測しますが、長いガベージコレクションによってHTTP要求が失敗するとは思われません。


ジョンスキートのコメントに応じて追加情報...

クライアントは間違いタイムアウトされていません。空の応答はかなり速く起こります。失敗すると、データはなく、HTTPヘッダーもありません。

+0

NIOコネクタを使用するようTomcatを設定しましたか? NIOコネクタにバグがあり、場合によっては空の応答が返される – nos

+0

いいえ、NIOを使用していません。 –

答えて

0

ガベージコレクションが問題の原因であることは非常に疑いがあります。サーバは単に接続を切るん

  • あなたは本当には本当には、この「空のレスポンスが」で構成されて正確に何を見つける必要がありますか?

  • クライアントがおそらくタイムアウトしていますか?
  • サーバーは有効なHTTP応答を返しますが、データはありませんか?

これらのそれぞれは、何が起こっているかを見つける非常に異なる方法を示唆することができます。障害モードを決定することは、IMOにとって最も重要な問題です。あなたがそれを知るまで、それは完全な推測です。

+0

ありがとうございます。質問文の最後に新しい段落で質問に答えました。クライアントは間違いなくタイムアウトしていません。空の応答はかなり速く起こります。失敗すると、データはなく、HTTPヘッダーもありません。 –

+0

@Mike:接続を完全に切断するだけですか?ログに例外がありますか? –