アプリケーションの応答が遅い原因は、フロントエンド、ゲートウェイ、アプリケーションサーバ、データベースなど、リクエストパスのあらゆる場所に存在する可能性があります。マイクロサービスアーキテクチャでは、単一のリクエストが異なるチームによって維持される複数のサービスにまたがるため、潜在的なボトルネックをすべてログに記録するにはコストがかかります。
Application Real-Time Monitoring Service (ARMS) のアプリケーションモニタリングは、コードを変更することなく、アプリケーションが公開するすべてのインターフェイスを自動的に追跡し、低速な呼び出しにフラグを立てることで、この問題に対処します。ARMS エージェントをインストールすると、アプリケーションのプロファイリング、分散トレースのキャプチャ、インターフェイスのパフォーマンスのモニタリングが継続的に行われます。
このガイドでは、ヘルス メトリックの確認、低速なインターフェイスの特定、トレースとメソッドスタックへのドリルダウンによる根本原因の特定という、トラブルシューティングのワークフローを順を追って説明します。
前提条件
開始する前に、以下をご確認ください。
ARMS が有効化されている Alibaba Cloud アカウント
ARMS エージェントがインストールされた、ARMS アプリケーションモニタリングに接続されているアプリケーション。インストール方法については、「アプリケーションモニタリングの概要」をご参照ください。
ステップ 1: アプリケーションのヘルス状態と低速な SQL メトリックの確認
[アプリケーション概要] ページは、アプリケーションの正常性のスナップショットを提供します。このページでは、次のメトリックを追跡し、前日比および前週比のトレンドを表示します。
| メトリック | 説明 |
|---|---|
| 平均応答時間 | 呼び出し元が体感する全体的なレイテンシー |
| リクエスト総数 | 選択した期間中のトラフィック量 |
| エラー | バグやダウンストリームの問題を示唆する可能性のある、失敗したリクエスト |
| リアルタイムインスタンス | アクティブなアプリケーションインスタンスの数 |
| フル GC の発生回数 | コマ落ちの原因となるガベージコレクションによる一時停止 |
| 低速な SQL クエリ | 低速のしきい値を超えたデータベースクエリ |
| 例外 | アプリケーションによってスローされたランタイム例外 |
| 低速な呼び出し | 応答時間のしきい値を超えたインターフェイスの呼び出し |
ARMS コンソールにログインします。 左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーションリスト] を選択します。
[アプリケーション一覧] ページで、上部のナビゲーションバーからリージョンを選択し、アプリケーションの名前をクリックします。
説明「Java アイコン」が [言語] 列に表示される場合、アプリケーションはアプリケーションモニタリングに接続されています。ハイフン (-) が表示される場合、アプリケーションは OpenTelemetry 向けマネージドサービスに接続されています。
[アプリケーション概要] ページで、[概要] タブをクリックします。このタブには、低速 SQL クエリの総数と、前日比および前週比の変動が表示されます。低速 SQL カウントの増加は、多くの場合、最初に調査すべきデータベース関連のボトルネックを示唆しています。

ステップ 2: 低速なインターフェイスの特定
[インターフェイス呼び出し] ページには、アプリケーションが公開する各インターフェイス、その呼び出し数、および応答時間が一覧表示されます。ARMS は低速インターフェイスにマークを付けるため、注意が必要なエンドポイントをすばやく特定できます。
左側のナビゲーションウィンドウで、[インターフェイス呼び出し] をクリックします。
左側のパネルで、低速なインターフェイスをクリックして詳細を表示します。応答時間が長い、または低速な呼び出しの数が多いインターフェイスに注目します。これらが、ユーザーが体感するレイテンシーの最も可能性の高い原因です。

ステップ 3: トレース詳細を使用した問題コードの特定
低速なインターフェイスを特定したら、そのトレースにドリルダウンして、原因となっている特定のコードを見つけます。インターフェイスのスナップショットは、チェーン内のすべての呼び出しとその持続時間を含む完全なトレースレコードをキャプチャするため、時間が費やされている箇所を正確に特定できます。
「インターフェイス呼び出し」ページの右側で、[インターフェイススナップショット] タブをクリックします。このタブでは、選択したインターフェイスのキャプチャされたすべてのトレースが表示されます。
トレース ID をクリックして、トレース詳細を開きます。
トレース詳細パネルで、呼び出し階層とタイミングの機能停止を確認します。[詳細] 列で、拡大鏡アイコンをクリックして、メソッドスタックとコンテキスト情報を確認します。
説明トレースのクエリとフィルターの方法に関する詳細については、「トレースクエリ」をご参照ください。
特定の応答が遅い呼び出しの根本原因を特定した後、[インターフェイス呼び出し] ページに戻り、リスト内の他の応答が遅いインターフェイスについてもこのプロセスを繰り返します。
継続的なモニタリングのためのアラート機能の設定
パフォーマンスリグレッションを早期に検出するために、1 つ以上のインターフェイスに対してアラートルールを設定します。例外が発生すると、ARMS は運用チームに自動的にアラート通知を送信します。
詳細については、「アプリケーションモニタリングのアラートルール」をご参照ください。