スレッドダンプ分析で複数スレッドアプリケーションのスレッド状況、スタックトレース、リソース使用量を分析することで、パフォーマンス問題のトラブルシュートを容易にします。
これにより、ボトルネックやデッドロックの特定と解決を効率的に行えます。
スレッドダンプ分析を使用して、本番環境のパフォーマンス問題を事前に検知します。スレッドダンプを定期的に取得してデータの検査を行うことで、ボトルネックの特定、デッドロックの解消、ガベージコレクションの監視、例外の調査を行えます。
フレームグラフや要求スタックツリーといった分析ツールを用いて、パフォーマンス問題によりエンドユーザーに影響が出る前に、コードの最適化やリソースの補填といったアクションを行えます。
スレッドダンプメトリックの表示方法:
次のタブにより、パラメーターとメトリックが表示されます。
指定したスレッドダンプに関連するスレッドの概要を表示します。
概要項目では、待機時間、ブロック済み、実行可能、待機中といった状態を基にしたスレッドの内訳を表示します。
スタック長グラフでは、10未満、10から100の間、101以上といった長さに基づいた内訳を表示します。
スレッド名グループグラフでは、スレッドダンプ内のスレッドグループのスレッドごとの内訳を表示します。
次の項目で、スレッド数の合計と状態ごとのスレッド(ブロック、待機中、実行可能、待機時間)を各グループで表示します。
同一スタックトレースグラフでは、スタックトレースを共有している場合に、スレッドグループの内訳を表示します。
最後の項目では同一のスタックトレースを表示します。
推移グラフで、複数スレッドのアプリケーション内のスレッド間の接続を描画し、他のスレッドでのスレッドブロッキングを特定できます。
スレッド名をクリックすると各スタックトレースを表示します。
[直近の実行メソッド]タブで、降順で実行されたメソッドとそれに該当するスレッド数とパーセンテージが表示されます。
[CPUスレッド]タブで上位5のCPU消費スレッドとそのスタックを表示して、アプリケーションのパフォーマンスを分析できます。
ガベージコレクション(GC)スレッドでアプリケーションのメモリ管理を行い、GCに関連するパフォーマンス問題の特定と解決を行います。
[GCスレッド]タブで、GCデーモンとGCタスク数をそれぞれ表示します。
デッドロックはあるスレッドが他のスレッドで必要なリソースを保持していることで処理できなくなったスレッドグループのことを指します。
[デッドロック]タブで待機中のリソースや各スレッドのステータスといったデッドロックと影響したスレッドに関する情報を表示します。
このデータを使用してデッドロックを特定し、リソースの開放や処理配列の変更を行います。
次の情報を表示します:
複数スレッドのアプリケーションで発生したエラーを監視し、アプリケーションの稼働率を向上させます。
[例外]タブで、上位5の例外スレッドと使用されたメソッドを表示します。
JVMのファイナライザースレッドはガベージコレクションオブジェクトのメソッド"finalize()"を実行し、破棄する前にクリーンアップ操作を行います。
[ファイナライザースレッド]タブで、ファイナライザースレッドで発生したスレッドブロックの推移グラフを表示します。該当するスレッドを開放して、アプリケーションのメモリ問題の防止に繋げられます。
フレームグラフで各関数やコードセグメントで要した時間の内訳を表示します。関数やコードセグメントを水平バー表示し、幅はスレッド数(スタックトレース内でそのメソッドを要求したスレッド数)を表します。
これにより改良、最適化が必要な箇所を特定し、複雑なシステム内でもボトルネックを把握できます。
要求スタックツリーで、複数スレッドのアプリケーションのパフォーマンスを可視化します。関数の階層表示、関数間のフローと状況の描画を行います。
これによりプログラム構造の把握、コードのデバッグ、再帰の特定、依存関係の分析、例外パスの追跡を行えます。
[スレッドダンプ分析]タブで、選択したスレッドダンプ内のスレッドリストを表示します。
[フィルターの追加]を使用して、検索条件を追加できます。