2016-10-11 8 views
0

私はローカルマシン上でTomcat/Springサーバーを実行しています。サーバーにPOST要求をすばやく連続して送信する別のプログラムを実行しています。各リクエストは、リモートPostgresqlデータベースの更新を引き起こし、次のリクエストが送信される前に終了します(応答コードをフラッシュします)。サーバーがオーバーロードされました

約100リクエスト後、サーバーは応答に時間がかかり始めます。約200リクエスト後、サーバーは応答を停止し、EclipseまたはWindowsタスクマネージャーで手動でkillするまで、使用可能なすべての処理を行います。

ガベージコレクションに関するエラーが発生したサーバーもありますが、これを試した最後の数回は見たことがありません。このガベージコレクションのエラーを見たときに、20回のリクエストごとに5秒のポーズを追加して、サーバーにガベージコレクションの時間を与えようとしましたが、役に立たなかったようです。

このサーバーの過負荷の原因を特定して解決するにはどうすればよいですか。

+1

メモリリークがあります。 –

+0

@ KarthikeyanVaithilingam-それは実際に役立って、正しい方向に私を指摘、ありがとう。私は今、http://stackoverflow.com/questions/40119/how-to-find-a-java-memory-leakを見ています... –

+0

JVMエクスプローラのプロファイリングを使用して、各要求は、しかし決して廃棄されませんでした。関連する要求の最後に各セッションを無効にすることによって、メモリの問題は解決されました。 –

答えて

0

メモリ使用量を監視しましたか?しかし、ここに問題を追跡するいくつかの方法があります:

  1. タスクマネージャで時間とともにメモリ使用量を追跡します。
  2. スレッドダンプを取得してください。
  3. visualVMを使用してCPU使用率を追跡します。
  4. DB接続が閉じているかどうかを確認してください。

    これ以上の原因が考えられますが、visualVMはこれらの問題の診断を開始するツールとなります。

関連する問題