2016-07-06 20 views
0

私のWebアプリケーションでは平均応答時間に関してパフォーマンス上の問題に直面しています。Tomcatの応答時間が急上昇

私のスタックは

オラクルのJava 7 Tomcatの7.62/61 AWSのLinuxボックス であるJavaは-Xms1G -Xmx4G -XParallelGCThreads = 4(さらに追加されます完了していない) から新しい遺物

を使用して付き合え

私はExecutors.newCachedThreadPool()を使用しています(これは悪いことですが、私の問題はこの問題の原因となるものではありません)。残りのプロセスは休止します。

私の新しい遺物は、Webアプリケーションの平均応​​答時間が15-20分ごとに急上昇することを示しています。スレッドカウントはその時に増加します。 (目に見えるもののみ)しかし、CPUは驚くほど上がらない。 (新しい遺物はGCコレクションの年齢%のみを示しています)

サービス側では、平均応答時間は決して増加せず、それ以上にとどまりませんスパイク中にフラット。 webapコールショーに

ドリルダウンは(新しい遺物上の2つのアプリケーションの統計との私には矛盾任意のアイデアのように感じている?)外部サービスにかかわらず、それらのサービスのための時間を増加

  1. 誰かが解決するためのアプローチを提案することができます問題?
  2. 私はそれ以上のデータを収集する必要がありますか?
  3. 誰かが新しい遺物の欠落した点に光を当てることができますか?
  4. GCかそれともスレッドプールですか?

答えて

0

GCの問題を特定するには:例えばGCログを有効にして、スレッドプール上で長時間実行中のタスクを識別するためにGCViewer

を通じて結果のファイルを実行します。プロファイラを添付して、かどうかを確認するために、スレッドの履歴を見てエグゼキュータプールのスレッドが常にビジー状態であるか、または何らかのアイドル時間がある

0

G1 GCを試す必要があります。長いgcとスパイクを短くします