Download PDF
Download page トランザクション スナップショットを使用したビジネス トランザクション パフォーマンスのトラブルシューティング.
トランザクション スナップショットを使用したビジネス トランザクション パフォーマンスのトラブルシューティング
このページでは、トランザクション スナップショット データを表示してビジネス トランザクション パフォーマンスのモニタおよびトラブルシューティングを行う方法について説明します。AppDynamics がトランザクション スナップショットを取得するタイミングや、トランザクション スナップショット設定を構成する方法の詳細は、「トランザクションスナップショットコレクション」を参照してください。
AppDynamicsは、インストゥルメンテーション環境で実行されるすべてのビジネストランザクションをモニタリングしており、メトリックにはこれらすべての実行が反映されます。トラブルシューティングのために、AppDynamics はトランザクションの特定インスタンスのスナップショットを取得します。トランザクションスナップショットは、トランザクションの単一の呼び出しに対する処理フローをクロスレイヤで表示します。
コールは、可能な場合、ティア上のトランザクション実行について、最も遅いメソッド、エラー、リモートサービスコールなどの詳細なキー情報をドリルダウンします。ドリルダウンには、部分的または完全なコールグラフが含まれる場合があります。コールグラフは、特定のティアでのビジネストランザクションの処理をコードレベルで示したものです。
トランザクションスナップショットの表示
ビジネス トランザクション スナップショットには、AppDynamics コントローラの以下の場所からアクセスできます。
- [Troubleshooting] > [Slow Response Times] または [Troubleshooting] > [Errors](ビジネスアプリケーションの左側のナビゲーションツリー)
- ビジネストランザクションダッシュボードのトランザクションスナップショットタブ
ビジネス トランザクション スナップショットをダブルクリックして、スナップショットビューアを表示します。以下のイメージおよび付属の表は、トランザクション フロー マップで利用可能なメトリックを示します。
コールアウト | メトリック名 | 説明 |
---|---|---|
1 | ティアの応答時間(ミリ秒) | 呼び出す側のティアで測定されるコールの合計応答時間。これには呼び出されるティアと他のティア、呼び出されるバックエンドの処理時間が含まれます。 |
2 | 所要時間の割合(%) | すべてのダウンストリームティアおよびバックエンドのダウンストリーム処理で費やされた時間。呼び出す側のティアで測定され、ビジネストランザクションの実行時間全体における割合で表されます。 |
3 | 非同期アクティビティ処理時間(ミリ秒) | このティアにおけるすべての非同期アクティビティの処理時間。このメトリックは、アクティビティが本質的に非同期であるため、ティア全体の応答時間にはカウントされません。このメトリックでは、ティアにおけるすべての非同期アクティビティの実行時間と、他のティアとバックエンド間の通信に使用された時間が以下のように加算して計算されます。 Asynchronous Activity Processing Time(非同期アクティビティ処理時間) = Asynchronous-activity-1-processing-time(非同期アクティビティ1処理時間)+ Asynchronous-activity-2-processing-time(非同期アクティビティ2処理時間)+ 以下同様 メトリックブラウザには、平均非同期処理時間メトリックを表示できます。これは、選択した時間範囲における非同期アクティビティ処理時間の平均です。 |
4 | 実行時間(ミリ秒) | 影響のあったすべてのティアにおけるビジネストランザクションによる処理時間および他の層とバックエンドの通信にかかった合計時間。このメトリックには、非同期アクティビティの処理時間(該当する場合)は含まれません。ただし、Wait-for-Completion の場合、処理を開始する前にブロッキングが行われていて、アクティビティの完了まで待機するため、元のビジネストランザクションの方がリクエストの処理に時間がかかります。 このメトリックの計算式は、次のようにティア/バックエンド間の特定のティア/通信におけるビジネストランザクションの処理時間を合計して計算します。 Execution Time(実行時間) = Time-spent-processing-in-Tier-1(ティア1での処理時間)+ Time-spent-processing-in-Tier-2(ティア2での処理時間)+ Time-spent-communicating-with-Tier-2(ティア2での通信時間)+ 以下同様 |
[Potential Issues] パネルでは遅いメソッドや遅いリモートサービスが強調され、パフォーマンスの問題の根本的な原因の調査に役立ちます。[Potential Issues] リストのアイテムをクリックすると、コールグラフのコールを表示できます。
ビジネス トランザクション スナップショットのフローマップにおいて、ドリルダウンリンクがあるティアは、AppDynamics がそのティアのコールグラフを取得したことを示します。
Java エージェントを使用してデータベースモニタリングで Oracle データベースを監視し、Java エージェントとデータベースエージェントの間のスナップショット相関を構成した場合、フローマップにはデータベースのドリルダウンも含まれる場合があります。
フローマップまたは Overview は、スナップショットビューアのビジネストランザクションに表示される複数のビューの 1 つです。他には、次のビューがあります。
- Slow Calls and Errors:最も遅いデータベースとリモートサービスコール、最も遅いメソッドおよびエラーに関する情報を表示。コールグラフをドリルダウンして詳細を表示すると、これらの遅延コールとエラーの詳細を確認することが可能。
- Waterfall View:実行セグメントに割り込んだ個別のビジネストランザクションの実行を表示。各セグメント(青色のバーで表示)は、インストゥルメント化されたアプリケーションの実行時に特定のスレッドでコードの実行にかかった時間、またはインストゥルメント化されていないバックエンドからの応答を待機している時間を表す。セグメント間のハンドオフは、同期リクエストについては実線、非同期リクエストについては点線で表示される。ウォーターフォールビューでは、特定のスナップショットについて、トランザクション時間を消費しているコールをすばやく判断できる。セグメントをクリックすると、ビジネストランザクションのリソース待機時間が表示されます。さらに、フローマップアイコンで示されているダウンストリーム アプリケーションを確認できます。
- Segment List:トランザクションのさまざまな区間を時間の降順で示し、スナップショットにアクセスして詳細をドリルダウンすることが可能。
コールのドリルダウン
コールドリルダウンには、特定のティアにおけるビジネストランザクション実行の詳細が含まれます。コールドリルダウンにより、トランザクションのコードレベルの情報を表示できます。
非同期セグメントを含むトランザクション スナップショットの内容は、スナップショットに [Business Transaction] ビューからアクセスするか、[App]/[Tier]/[Node] ビューからアクセスするかで若干異なります。
- 最初、[Business Transaction] ビューには、トランザクションの元のセグメントのみが表示されます。必要に応じて、非同期セグメントにドリルダウンすることができます。
- [App]/[Tier]/[Node] ビューでは、その特定のエンティティに関連するすべてのセグメントがカバーされます。これらのビューのいずれかにアクセスすると、元のセグメント、非同期セグメントを含むすべてのセグメントを確認できます。
ノードドリルダウン
ノードドリルダウンでは、診断データが次のタブに整理されています。
- 概要タブには、問題の概要、実行時間、CPUタイムスタンプ、ティア、ノード、プロセスID、スレッド名などが含まれます。
- コールグラフタブには、特定のティアでのトランザクションの実行フローを示すコールグラフが表示されます。詳細については、「コールグラフ」を参照してください。
- [Slow Calls and Errors] タブには、遅延メソッドコールとエラーの原因となったコールがすべてリストされます。[Hot Spots] スライダを使用して、 実行時間でコールをソートすることができます。最も高価なコールが一番上のスナップショットに表示されます。
- エラー詳細タブは、例外スタックトレースとHTTPエラーコードを表示します。
- [DB & Remote Service Calls] タブには、データベースへのすべての SQL クエリ終了コールと、Web サービス、メッセージキュー、キャッシュサーバなどの他のリモートサービスへの終了コールが表示されます。AppDynamics が SQL 終了コールを処理する方法の詳細については、「データベースクエリとバッチ」を参照してください。
- [Server] タブには、ハードウェア(CPU メモリ、ディスク IO、ネットワーク IO)、メモリ(ヒープ、ガベージコレクション、メモリプール)、JMX などのグラフが表示されます。サーバーの可視性がある場合は、サーバハードウェアとオペレーティングシステムの詳細なパフォーマンス情報にアクセスできます。
- Java POJO ビジネストランザクションなどのトランザクションのトランザクション スナップショットを続行すると、完全な詳細は利用できません。たとえば、サンプルの URL、セッション ID、スレッド名などが表示されない場合があります。
- ネットワーク可視性を使用している顧客の場合、[Network] タブには、トランザクションやその他の関連データに対するネットワークの影響に関するグラフが表示されます。ネットワーク KPI とトラブルシューティングの詳細については、「ネットワークダッシュボードとアプリケーション フロー マップの KPI メトリック」および「右クリックダッシュボードの KPI メトリック」を参照してください。
- データコレクタタブには、トランザクションスナップショットに関連するアプリケーションデータが表示されます。設定オプションについては、「データコレクタ」を参照してください。
HTTP Data: HTTPペイロードには、URLやセッションIDなどの基本データ、およびサーブレットエントリポイント、Struts、JSF、Webサービスなどの追加データが含まれています。HTTPデータコレクタを使用して、どのクエリパラメータまたはCookie値をトランザクションスナップショットにキャプチャするかを指定できます。
Cookie: スナップショットでは、Cookie値を使用して遅延トランザクションまたはエラートランザクションを開始したユーザーを特定できます。
User Data:トランザクションにコンテキストを追加するために、トランザクション中に実行されたあらゆるメソッドのユーザデータ(パラメータ値や戻り値など)。メソッド呼び出しのデータコレクタを使用して、メソッドおよびパラメータインデックスを指定できます。
ビジネストランザクションが開始される直前に終了コールが行われ、特にトランザクションに遅延やエラーがあるとマークされている場合、終了コール情報がこのフィールドに表示されることがあります。この状況では、終了コールに関する機密情報が表示される場合があることにご注意ください。
- [More] タブには、確立されたベースラインから最も逸脱しているノードのメトリックが、ノードの問題として表示されます。また、スナップショット中に呼び出されたすべてのサービスエンドポイント、およびトランザクションのサーブレット URI とプロセス ID も表示されます。
データベースクエリおよびバッチ
AppDynamicsはSQLクエリを正規化し、デフォルトでは未処理値、バインド値を表示しません。SQLキャプチャ設定を構成し、クエリ内の未処理SQLデータを監視することができます。1秒未満の個々のコールは報告されません。
データをJDBCクライアントに返す際、データベース管理システムは結果を バッチ 応答として返すことがあります。各バッチには結果セットの合計のサブセットと通常10件の記録が含まれます。JDBCクライアントはバッチを取得し、結果を反復処理します。クエリが満たされない場合、JDBCクライアントは次のバッチを取得します。
[SQL query] パネルでは、[Query] 列で X の後に数字が続く場合、そのクエリがバッチ内に示される回数実行したことを意味します。Count 列の値は、バッチジョブが実行された回数を示します。
データベースドリルダウン
データベースドリルダウンは、次のトランザクション情報を提供します。
- Queries: 上位の SQL ステートメントとストアドプロシージャとして、データベースで最も時間を消費するクエリを表示します。SQL待機時間などの他のメトリックとクエリの重さを比較すると、調整が必要なSQLが出てくる場合があります。
- Clients: データベースを使用する上位 N クライアントのホスト名または IP アドレスを表示します。データベースクライアントとは、データベースインスタンスにアクセスする任意のホストです。
- Sessions: 消費された時間でソートしたデータベースを使用して、上位 N セッションのセッション ID を表示します。
- Schemas: データベースサーバ上で最もビジーな上位 N のスキーマの名前を表示します。
トランザクション スナップショット リストの使用
UI 時間帯で生成されるトランザクションは、アプリケーション、ティア、ノード、またはビジネス トランザクション ダッシュボードの [Transaction Snapshots] タブより表示できます。このタブでは、以下を実行できます。
- [Compare Snapshots] で、2 つのスナップショットにおけるコールのパフォーマンスを並べて比較して表示。
- スナップショットのグループ内で最も高いコール/SQL ステートメントを特定すると、選択したスナップショットに最も多くの時間を消費したコールが表示されます。 スナップショットは 30 件まで選択することができます。
- フィルタオプションを使用してスナップショットを検索。
コントローラは、デフォルトで 2 週間が経過するとトランザクション スナップショットをパージしますが、スナップショット保存期間は構成が可能です。スナップショットをアーカイブして、通常のスナップショットの有効期間を超えて保存することができます。たとえば、特定の問題に関連付けられたスナップショットを将来の分析のために保持します。スナップショットをアーカイブするには、リストでスナップショットを選択して [Actions] > [Archive] を選択します。
右端の列にあるファイルキャビネットのアイコンは、スナップショットがアーカイブされていることを示します()
スナップショットリストにアーカイブされたスナップショットのみを表示するには、スナップショットリストをフィルタリングして [Only Archived] にチェックを入れます。