アプリケーションの応答が遅い原因は、リクエストパスのどこにでも存在する可能性があります。フロントエンド、ゲートウェイ、アプリケーションサーバー、データベースなどです。マイクロサービスアーキテクチャでは、1 つのリクエストが異なるチームによって管理される複数のサービスにまたがるため、すべての潜在的なボトルネックをログに記録するにはコストがかかります。
Application Real-Time Monitoring Service (ARMS) のアプリケーションモニタリングは、コード変更なしで、アプリケーションが公開するすべてのインターフェイスを自動的に追跡し、低速呼び出しにフラグを立てることで、この問題に対処します。ARMS エージェントをインストールすると、アプリケーションの継続的なプロファイリング、分散トレースのキャプチャ、インターフェイスパフォーマンスを監視します。
このガイドでは、トラブルシューティングのワークフローについて説明します。ヘルス メトリクスを確認し、低速インターフェイスを特定し、トレースとメソッドスタックを詳しく調べて根本原因を見つけます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ARMS が有効化されている Alibaba Cloud アカウント
ARMS エージェントがインストールされており、ARMS アプリケーションモニタリングに接続されているアプリケーション。インストール方法については、「アプリケーションモニタリングの概要」をご参照ください。
ステップ 1:アプリケーションの状態と低速 SQL メトリクスの確認
[アプリケーション概要] ページは、アプリケーションの正常性のスナップショットを提供します。以下のメトリクスを追跡し、前日比および前週比の傾向を表示します。
| メトリクス | 意味 |
|---|---|
| 平均応答時間 | 呼び出し元が経験する全体的な待機時間 |
| 合計リクエスト数 | 選択した期間中のトラフィック量 |
| エラー | バグまたはダウンストリームの問題を示す可能性のある失敗したリクエスト |
| リアルタイムインスタンス数 | アクティブなアプリケーションインスタンスの数 |
| Full GC の発生回数 | 遅延を引き起こす可能性のあるガベージコレクションの一時停止 |
| 低速 SQL クエリ | 低速しきい値を超えるデータベースクエリ |
| 例外数 | アプリケーションによってスローされたランタイム例外 |
| 低速呼び出し | 応答時間しきい値を超えるインターフェイス呼び出し |
ARMS コンソールにログインします。左側のナビゲーションペインで、[アプリケーション監視] > [アプリケーション一覧] を選択します。
[アプリケーションリスト] ページで、トップナビゲーションバーでリージョンを選択し、アプリケーション名をクリックします。
説明[言語] 列に
アイコンが表示される場合、そのアプリケーションは Application Monitoring に接続されています。 ハイフン (-) が表示される場合、そのアプリケーションは Managed Service for OpenTelemetry に接続されています。[アプリケーション概要] ページで、[概要] タブをクリックします。このタブには、低速 SQL クエリの総数と、前日比および前週比の変動が表示されます。低速 SQL クエリ数の増加は、最初に調査すべきデータベース関連のボトルネックの兆候であることがよくあります。
ステップ 2:低速インターフェイスの特定
[インターフェイス呼び出し] ページには、アプリケーションが公開する各インターフェイスが、その呼び出し回数および応答時間とともに一覧表示されます。ARMS は低速なインターフェイスをマークするため、注意が必要なエンドポイントをすばやく特定できます。
左側のナビゲーションペインで、[インターフェイス呼び出し] をクリックします。
左側のパネルで、低速インターフェイスをクリックして詳細を表示します。応答時間が長いインターフェイス、または低速呼び出しの数が多いインターフェイスに注目してください。これらは、ユーザーが体感する待機時間の最も可能性の高い原因です。
[インターフェース呼び出し] ページに移動すると、デフォルトで [概要] タブが表示されます。 左側のパネルには、すべてのインターフェースの応答時間、リクエスト数、エラー数、例外数が一覧表示されます。 右側のパネルには、[リクエスト/分]、[応答時間/分]、[低速呼び出し/分]、および [HTTP ステータスコード統計] の 4 つのモニタリングチャートが表示されます。 左側のインターフェイスリストで応答時間順に並べ替えて、レイテンシーの高い低速呼び出しインターフェイスを見つけます。
ステップ 3:トレース詳細による障害コードの特定
低速インターフェイスを特定したら、そのトレースを詳しく調べて、原因となっている特定のコードを見つけます。インターフェイススナップショットは、完全なトレースレコード (チェーン内のすべての呼び出しとその期間) をキャプチャするため、どこで時間がかかっているかを正確に特定できます。
[インターフェイス呼び出し] ページの右側で、[インターフェイススナップショット] タブをクリックします。このタブには、選択されたインターフェイスでキャプチャされたすべてのトレースが表示されます。
トレース ID をクリックして、トレース詳細を開きます。
トレース詳細パネルで、呼び出し階層とタイミングの内訳を確認します。[詳細] 列で虫眼鏡アイコンをクリックし、メソッドスタックとコンテキスト情報を調査します。
説明トレースをクエリおよびフィルタリングする他の方法については、「トレースクエリ」をご参照ください。
特定の低速な呼び出しの根本原因を特定した後、[インターフェース呼び出し] ページに戻り、リスト内の他の低速なインターフェースに対してこのプロセスを繰り返します。
継続的な監視のためのアラート機能の設定
パフォーマンスの低下を早期に検出するには、1 つ以上のインターフェイスに対してアラートルールを設定します。例外が発生すると、ARMS は自動的に運用チームにアラート通知を送信します。
詳細については、「アプリケーションモニタリングのアラートルール」をご参照ください。