ヒットマップトランザクションの検索
本ドキュメントでは、WhaTapモニタリングサービスのヒットマップトランザクションメニューを使用して、Webアプリケーションサーバ(Web Application Server)の問題を特定し、トラブルに対応する方法を紹介します。
アプリケーションモニタリングマネージャーは、業務内容に応じて、さまざまな要因をモニタリングしたいと考えています。サーバー担当者はCPU、メモリ、ディスク、ネットワークなどのリソースをモニタリングし、リソースをどの程度使用しているかを確認する必要があります。DB担当者は 、DBクエリのパフォーマンスを向上させるための指標を表示する必要があります。
一方、従来のモニタリング方法では、サービス(AP) 担当者は通常、(Heap)ヒープ使用量とCPU使用率を確認するだけです。しかし、この方法では、サービス(AP)の問題を特定することができません。サービス(AP)で最も重要なことは、ユーザーのリクエストに適切に応答するかどうか、どれだけ迅速に、エラーなく応答するかです。これらを把握するためには、ユーザーのリクエストが正しく満たされていることを確認するプロセスが必要です。ユーザーのリクエストの1つ1つをリクエストと呼び、このリクエストをサーバーで処理と応答するプロセスをトランザクション(Transaction)として定義されます。
WhaTapモニタリングサービスでは、トランザクションを「進行中のトランザクション」と「終了したトランザクション」に区分し、サービス(AP)のトラブル状況を把握することができます。アプリケーションダッシュボードメニューのヒットマップウィジェットでは、「終了した個々のトランザクション」を分布図形式のチャートで確認することができます。ヒットマップチャートは、5秒単位で終了したトランザクション情報を収集し、ポイント単位で表現するウィジェットです。このチャートから想定通りに1秒かかるトランザクションが想定とは異なり、2秒ほどかかる場合、つまり応答時間が2倍以上かかるトランザクションを見つけることで、トラブルの原因を分析できます。
パターン分析
分布図チャートの形状によってどのようなトラブルが発生したのかを確認する方法について説明します。
ヒットマップトランザクションは、時間の経過とともにユーザーのリクエストに対応する応答時間を分布図の形式で表現するチャートです。アプリケーションダッシュボードでヒットマップウィジェットの右上のを選択すると、分析 > ヒットマップメニューで確認することができます。

横軸はトランザクションの終了時間、縦軸は応答時間です。トランザクションを終了した時間ごとにユーザのリクエスト(Request)に対する応答(Response) 時間をチャート上に四角形で表現します。これにより、ユーザーのリクエストに正常に応答したかどうかを把握できます。ヒットマップトランザクションチャートの四角いボックスの色は、次のような意味を持っています。
- 青色: 正常トランザクション
- オレンジ、赤色:エラーが発生したのか、応答リクエストが拒否されたのか、エラー頻度に応じて赤に近い色で表現されます。
このチャートで最も重要な点は、トランザクションボックスが縦または横に並んでいる状況です。次のヒットマップパターンを参照してください。
縦線が一時的に現れるパターンです。縦線が発生する場合は、トランザクションの応答時間は異なりますが、終了時間は同じであることを意味します。トランザクション処理中に一時的にロック(Lock)が発生すると、トランザクションの処理を待機します。(Lock)ロックが解除されると待機中のトランザクションは同じ時間に終了します。これにより、縦線が作成されます。

横線が現れるパターンです。10秒のタイムアウト条件でそのリソースが不足すると、多くのトランザクションは10秒待機後にタイムアウトエラーが発生します。この時、ヒットマップの10秒後に横線が発生します。タイムアウト後に再試行するロジックがある場合は、上図のように横線が10秒単位で繰り返します。

波のように見えるフライングパターンは、特定のリソースやログなどの共通リソースが不足しているために間隔を置いて表示されるパターンです。

過負 荷パターンは、全体または一部の応答に一時的に問題を引き落とすトランザクションが一度に密集するときに発生するパターンです。

暴走パターンは、大量のトランザクションのリクエストや負荷が発生した場合、応答時間が全体的に増加するパターンです。
パターンが発生した場合に、パターンの原因となっている要因がサーバーの内部にあるか外部あるかを特定することが重要です。次の図のような構造でシステムを設計したと仮定します。

チャート下の領域は、ほとんど応答時間が速いトランザクションであるため、パターンを探すことはそれほど意味がありません。上の領域の遅い区間で作成されたパターンの共通点を探すことが必要です。縦線パターンが発生した時、サービス(AP)でロック(Lock)が発生した場合、1つのウェブアプリケーションのみパターンが発生します。逆に、外部に接続されたDatabaseで(Lock)ロックが発生すると、すべてのウェブアプリケーションでパターンが発生します。

チャート領域をドラッグすると、ドラッグした領域のトランザクション情報を画面下のTXトレース一覧に読み込むことができます。右側のアプリケーションウィジェットは、エージェントをグループ化して一覧として表示します。
トラブルの原因に関する共通点を見つけることが目的です。まず、同じアプリケーションで問題が発生したかどうかを確認してください。次に、同じURLで問題が発生したかどうかを確認してください。また、クライアントIPが同じかどうかを確認することもできます。
区間およびスタック分析
トラブルの原因が外部ではなく内部の問題であるかをどのように判断できるでしょうか?WhaTapは、アクティブスタックという技術を使用して、実行中のトランザクションのスタック情報を収集します。スタック情報は10秒ごとに収集され、収集されたデータは統計情報として確認できます。 また、サービスのロジックを実行する各メソッド、SQL、外部呼び出し情報も含まれます。
内部的な問題の場合、各トランザクションの実行履歴を時間ごとに確認し、速度が遅くなった区間を特定することで、問題を見つけて解決することができます。外部の問題の場合は、SQLと外部呼び出し情報を確認できます。
例えば、縦線パターンでロック(Lock)が発生する原因を調べる場合は、同じパターン内で最も遅いトランザクションと最も速いトランザクションを確認する方法があります。ヒットマップトランザクションチャートでパターンが発生した領域をドラッグしてください。TXトレース一覧にドラッグした領域のトランザクション情報を読み込みます。TXトレース一覧を経過時間を基準で並べ替えて、最も時間がかかったトランザクションを選択します。選択したトランザクションに関する詳細情報が含まれたトランザクション情報ウィンドウが表示されます。

テーブルビュータブでは、段階別時間と経過時間を確認することができます。時間は各段階が開始または終了した時間で、経過は各メソッドの開始から終了までの合計所要時間です。時間差は、その前に実行したメソッド間の間隔です。

テーブルビュータブを使用して、遅くなった区間を見つけることができます。同様に、最も速かったトランザクションで遅くなった区間を確認してください。共通点を見つけることができます。速度低下の原因がサービス(AP)のロジックによって発生した状況の場合は、アクティブスタックを確認してください。アクティブスタックボタンをクリックすると、詳細情報が含まれたウィンドウが表示されます。ツリービュータブでは、アクティブスタックと以前に実行されたメソッドとの相関関係を確認すること ができます。タイムラインバーで区間をクリックすると、選択した区間に関する情報を展開して確認することができます。
-
アクティブスタックは10秒ごとにスナップショットを保存しているため、どの区間でも確認できます。応答時間が長くなる区間を確認する可能性が高いため、アクティブスタックを使用して区間が開いたポイントを見つけることができます。
-
TXトレース一覧でアクティブスタックを含むトランザクションは、 Aアイコンが表示します。
ヒットマップチャートでトランザクションを表示するトランザクションを見つけることが目的です。一緒に参照するトランザクションを確認して、応答時間や終了時間に影響を与える要因を特定する必要があります。アプリケーションですべてのメソッドを追跡すると、区間分析が可能ですが、オーバーヘッドが発生し、応答時間に歪みを与 える可能性があります。そのため、選択されたクラスメソッドのみを追跡する必要があります。その選択ポイントはシステム運用者の観点でのみ決定しますが、トラブルの原因となる(Lock)ロックやその他の要因が追跡から除外される場合があります。この除外される部分をサポートするのがアクティブスタックです。
WhaTapのモニタリングサービスは、アプリケーションサーバを運用する際に常時繰り返される問題を把握できるよう、定期的にアクティブスタックをスナップショットに記録し、トラブルを引き起こす根本的な要因をより高い確率で見つけられます。この方法で収集したデータを統計的に確認できるメニューが分析 > スタックです。スタックの詳細については、次の文書を参照してください。
-
トランザクション情報ウィンドウの