Jboss にデプロイされた Java Struts ベースの Web アプリケーションで大規模なスパイクが発生する原因を検出しようとしています。Yourkit と visualVM を使用してダンプを取得し、ダンプを分析しましたが、これらのスパイクは一時的なものであり、ダンプが取得されるまでには何も残っていません。
質問は - ランタイムのスパイクの原因を検出する方法はありますか?
Jboss にデプロイされた Java Struts ベースの Web アプリケーションで大規模なスパイクが発生する原因を検出しようとしています。Yourkit と visualVM を使用してダンプを取得し、ダンプを分析しましたが、これらのスパイクは一時的なものであり、ダンプが取得されるまでには何も残っていません。
質問は - ランタイムのスパイクの原因を検出する方法はありますか?
ここにいくつかのアイデアがあります:
リクエスト ログを調べて、スパイクと、リクエスト ボリュームまたは特定のリクエスト タイプとの相関関係があるかどうかを確認します。
GC ロギングを有効にして JVM を実行し、相関関係を探します。
アプリケーションでデバッグ レベルのロギングを有効にし、相関関係を探します。(より多くのアプリケーション ログをオンにすると、パフォーマンス特性が変化する可能性があるため、これには注意してください。)
(Linux/Unix の場合) vmstat および iostat を実行し、余分なディスク アクティビティまたはスワッピング/ページングとの相関関係を探します。
オブジェクトの作成速度または非ガベージ オブジェクトの数/サイズにスパイクがある場合は、JVM やオペレーティング システムではなく、アプリケーションが原因である可能性が高くなります。アプリケーションのワークロードの性質が一時的に変化したことが原因である可能性は十分にあります。たとえば、リクエストが急増している場合や、多くのオブジェクトの作成を伴う異常なリクエストがある場合などです。リクエストとアプリケーションのログに注目してください。