2011-10-27 5 views
0

私はtomcatサーバの奇妙な動作を観察しています。Tomcat 6レスポンス書き込み

私のTomcatサーバーでaound 200リクエストを同時に発生させると、アプリケーションログに、私のサーブレットのdoGet()が約500msでリクエストを処理し終わったことが示されます。しかし、クライアント側では、平均応答時間は約30秒です(これは、クライアントが30秒後にtomcatからの応答を開始することを意味します)!

私のサーブレットの処理時間の終わりとクライアントが応答を受け取る時間との間にこのような長い遅延がどのようにあるのか、誰にも分かりませんか?

私のサーバーはRackspace VMでホストされています。

答えて

0

犯人を見つけました。私は、ホストサーバーがわずかな要求であっても異常に高いCPU使用率を使用していたので、JConsoleをTomcatに接続し、すべてのワーカースレッドが高いブロッキングカウントを持つことがわかりました。スタックトレースを見ると、JAXBContextのインスタンス化中にロックが発生しました。また、リクエストごとに比較的高価なJAXBContextを作成するアプリケーションもあります。

要するに、この問題は、スレッドごとのJAXBContextインスタンス化によって発生しました。解決策は、JAXBContextがアプリケーションごとに1回作成されるようにすることでした。

関連する問題