診断アクションでは、以下を行います。
- 診断セッションを開始してスナップショットを収集する
- Java のみのスレッドダンプを取得する
パフォーマンスが遅い、またはアプリケーションでエラーが多発する場合、診断アクションを開始して根本的な原因を解明できます。
診断セッションは、ビジネストランザクションをモニタリングする正常性ルールに対してのみ開始できます。
診断セッションでは、キャプチャされたトランザクションのスナップショットを完全なコールグラフ付きで表示します。このスナップショットにより、ビジネストランザクションパフォーマンスの正常性ルール違反や遅い/停止したトランザクションイベントの診断が可能になります。診断セッションをトリガーするイベントの影響を受けたエンティティは、ビジネストランザクションでなければなりません。
スレッドダンプは、JVMプロセスの一部であるすべてのスレッドの状態の汎用スナップショットです。各スレッドの状態は、各スレッドのスタックの内容を示すスタックトレースで表示されます。スレッドダンプは、コードのデッドロックなど、JVMのパフォーマンス問題を診断するために使用されます。
診断セッションアクション
診断セッションは、常にビジネストランザクションに関連付けられています。完全なコールグラフを含むトランザクションスナップショットが表示されるので、問題の根本的な原因を掘り下げることができます。
診断セッションアクションを作成するには
- [Actions Configuration] ペインにアクセスします。「アクション」の「アクションの作成と変更」を参照してください。
- [Diagnostics] で [Create Action] ペインの [Start a Diagnostic Session on the selected Business Transactions ] を選択して [OK] をクリックします。
- アクション名、診断セッションの持続時間(分)、毎分取得するスナップショットの数を入力したら、イベントによって影響を受けたビジネストランザクションのために診断セッションを開始するのか、あるいは特定のビジネストランザクション用に開始するのかを選択します。
特定のビジネストランザクションを選択する場合、それを利用可能リストから選択リストに移動することにより、診断セッションをトリガーするビジネストランザクションを指定します。アクションをトリガーしていないビジネストランザクションも指定できます。 - OK をクリックします。
診断アクションの結果
実行した診断アクションの結果は、アクションをトリガーしたイベントの一覧に表示されます。診断セッションの詳細や、アクションによって開始されたスレッドダンプを取得するには
- [Events] リストで、結果を確認するアクションをトリガーしたイベントの行を見つけます。
- [Actions] 列で次の手順を実行します。
- スレッドダンプアクションの詳細を表示するには、
をクリックします。 - 診断セッションアクションの詳細を表示するには、
をクリックします。
ディスク上で、スレッドダンプはコントローラホームの app_agent_operation_logs
ディレクトリに保存されています。ファイル名は app_agent_operation
の表の ID に基づいています。
AD Thread
で識別されるスレッドは、Splunk AppDynamics アプリケーション エージェント コードにより開始されたスレッドです。
スレッドダンプアクション 
Java エージェントには、指定したサンプル数(最大 50)のスレッドダンプを取得することを指示できます。各サンプルの持続時間(最大 500 ミリ秒)も指定できます。スレッドダンプは、エージェントにより監視されているノードで実行されます。
ユーザーがスレッドダンプを要求するには、Agent Advanced Operation 権限が必要です。
スレッドダンプにおけるエージェントの制限
一度に 1 つのスレッドダンプ操作が実行されます。並行して実行されることはありません。処理中に追加のスレッドダンプ要求を受信した場合、エージェントあたり最大 5 つまでキューに登録されます。
エージェントあたり5つのスレッドダンプという制限を超えた場合、制限が原因でスキップされたスレッドダンプ処理のあるイベントと、このイベントにリンクしたポリシーに対するアクションダイアログが、コンソールに表示されます。
スレッドダンプアクションを作成するには
- [Create Action].Actions v24.3 ペインにアクセスします。
- [Diagnostics] で [Create Action] ペインの [ Take a thread dump] を選択して [OK] をクリックします。
- アクションの名前、取得するサンプルの数、スレッドダンプの間隔(ミリ秒単位)を入力します。スレッドダンプアクション開始前に承認を要求する場合、[Require approval before executing this Action] チェックボックスをオンにし、このアクションを承認する権限のある個人またはグループのメールアドレスを入力します。「承認が必要なアクション」を参照してください。
- OK をクリックします。
バックエンドの検出イベントによってスレッドダンプアクションがトリガーされる時にバックエンドが迅速に解決されない場合、ポリシーはスレッドダンプを開始しません。
ノードに対するアクションの実行
Code Deadlock
のポリシーを作成してスレッドダンプアクションを選択すると、ノードでのアクションの実行に基づいて次の動作が発生します。
- ノードに対するパーセンテージ入力が 100% 未満の場合、アクションが実行される、影響を受けるノードがランダムに選択されます。パーセンテージが低くても、影響を受ける少なくとも 1 つのノードでアクションが実行されます。
たとえば、5 つのノードで違反があり、入力されたパーセンテージが 40% の場合、Splunk AppDynamics On-Premises は 2 つのノードをランダムに選択し、それらに対してスレッドダンプを実行します。また、5 つのノードで違反があり、入力されたパーセンテージが 10% しかない場合でも、Splunk AppDynamics On-Premises は 1 つのノードをランダムに選択し、そのノードに対してスレッドダンプを実行します。

- ノード数を絶対入力した場合、アクションが実行される、影響を受けるノードがランダムに選択されます。
たとえば、5 つのノードで違反があり、入力された絶対値が 3 の場合、Splunk AppDynamics On-Premises は 3 つのノードをランダムに選択し、それらに対してスレッドダンプを実行します。
