本番環境におけるレイテンシースパイクやエラーレートスパイクなどのアプリケーションのアノマリーには、多くの原因があります。一般的な原因としては、不均一なトラフィック、単一インスタンス障害、アプリケーションの欠陥、依存コンポーネントの障害などが挙げられます。新しいアプリケーションを起動する前や大規模なプロモーションの準備をする際には、体系的なパフォーマンスチューニングを行うことを推奨します。これには、既存のパフォーマンスボトルネックの分析や、頻繁にエラーや高レイテンシーを引き起こすインターフェイスおよびコンポーネントの最適化が含まれます。このトピックでは、ARMS Trace Explorer の不正/低速トレース分析機能を使用して、システムやアプリケーションにおける不正および低速な呼び出しの根本原因を特定する方法について説明します。これにより、問題のトラブルシューティングやパフォーマンスボトルネックの特定に役立ちます。
前提条件
-
アプリケーションにエージェントがインストールされていること。詳細については、「アプリケーションモニタリングの概要」をご参照ください。
-
ARMS コンソールの新バージョンに切り替わりました。
[アプリケーション] ページで、ページタイトルの横にある [新しいバージョンに切り替え] ボタンをクリックします。
デモを試す
不正な呼び出しの分析
ステップ 1:不正な呼び出しが発生した時間の特定
-
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
-
アプリケーションリスト ページで、ページ上部でリージョンを選択し、次にアプリケーション名をクリックします。
説明言語 列のアイコンは、以下のとおりです。
:アプリケーションモニタリングに接続された Java アプリケーション。
:アプリケーションモニタリングに接続された Go アプリケーション。
:アプリケーションモニタリングに接続された Python アプリケーション。-:トレーシング分析と統合されたアプリケーション。
-
上部のナビゲーションバーで [Trace Explorer] をクリックします。
説明[Trace Explorer] ページは、コンソールの新しいバージョンでのみ利用可能です。新しいバージョンへの切り替え方法については、「前提条件」をご参照ください。
サンプルアプリケーション mall-gateway では、15:20 から 15:28 の間に複数の HTTP エラー呼び出しが発生していることがわかります。

-
トラブルシューティングを開始するには、クエリ時間範囲を HTTP エラーが発生した時間に設定します。
[Trace Explorer] タブの右上隅にある時間範囲を 8 分 (例:2024-06-26 15:20 から 2024-06-26 15:28) に絞り込みます。ページには、呼び出し数と HTTP 500 エラーの横棒グラフ、および時間パーセンタイルの折れ線グラフが表示されます。これらのチャートを使用して、エラーが急増した正確なタイムウィンドウを特定します。
ステップ 2:ソースインターフェイスまたはコンポーネントの特定
[不正/低速トレース分析] タブでは、不正なトレースは /components/api/v1/mall/product インターフェイスに集中しており、すべて HTTP 500 エラーを返しています。
/components/api/v1/mall/product インターフェイスのトラブルシューティング
-
下のチャートで、spanName: /components/api/v1/mall/product をクリックします。

この時点で、Trace Explorer は自動的に
serviceName="mall-gateway" AND spanName="/components/api/v1/mall/product"をフィルター条件として設定します。/components/api/v1/mall/product インターフェイスのすべてのトレースが失敗していることがわかります。
検索結果として 1,440 件の呼び出しが返され、すべて HTTP
500エラーコードが付いています。[不正/低速トレース分析] タブには、分析が 1,000 件の不正なトレース (ランダムにサンプリング) と 0 件の正常なトレースに基づいていることが表示されます。 -
[リスト] タブで、任意のトレースの横にある [詳細] をクリックして、その詳細を表示します。
トレース詳細には、トレースに 3 つのスパンが含まれており、mall-user-server サービスの
/components/api/v1/http/successインターフェイスが状態コード 500 を返したことが示されています。右側のスパン詳細パネルの [属性] タブでは、http.status_code属性が500であることが示されており、このインターフェイスがエラーソースであることを確認できます。
低速インターフェイスの分析
ステップ 1:低速な呼び出しが発生した時間の特定
-
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
-
アプリケーションリスト ページで、ページ上部でリージョンを選択し、アプリケーション名をクリックします。
説明言語 列のアイコンは、次のことを示します。
:アプリケーションモニタリングに接続された Java アプリケーション。
:アプリケーションモニタリングに接続された Go アプリケーション。
:アプリケーションモニタリングに接続された Python アプリケーション。-:トレーシング分析に接続されたアプリケーション。
-
上部のナビゲーションバーで [Trace Explorer] をクリックします。
サンプルアプリケーション mall-user-server では、15:40 から 15:49 の間に 5 秒以上かかる低速な呼び出しが多数発生していることがわかります。

-
クエリ時間範囲を低速な呼び出しが発生した時間に設定します。
たとえば、右上隅の時間ピッカーで、
2024-06-26 15:40から2024-06-26 15:49までの 9 分間の間隔を選択します。 -
[不正/低速トレース分析] タブで、持続時間のしきい値を 5000 ms に設定してトラブルシューティングを開始します。
低速トレースの分析結果がページ下部に表示され、インターフェイス名、HTTP 応答状態コード、名前空間など、影響の大きい順に主な貢献特徴がランク付けされます。各項目では、低速トレースと正常トレースにおける特徴の出現率が比較されます。
ステップ 2:ソースインターフェイスまたはコンポーネントの特定
[不正/低速トレース分析] タブでは、低速トレースは主にインターフェイス名が /components/api/v1/http/success、プロトコルタイプが EagleEye、名前空間が arms-test のスパンに集中しています。
この分析は、54 件の低速トレース (持続時間 ≥ 5 秒と定義) と 837 件の正常なトレース (ランダムにサンプリング) の比較に基づいています。最もランクの高い特徴である /components/api/v1/http/success は、低速トレースの 100.0% を占め、正常なトレースでは 0.0% です。2 番目にランクの高い特徴である EagleEye プロトコルは、低速トレースの 100.0% を占め、正常なトレースでは 37.28% です。3 番目にランクの高い特徴である arms-test 名前空間は、低速トレースの 100.0% を占め、正常なトレースでは 37.28% です。
/components/api/v1/http/success インターフェイスのトラブルシューティング
下のチャートで、spanName: /components/api/v1/http/success をクリックします。

Trace Explorer は自動的に serviceName="mall-user-server" AND spanName="/components/api/v1/http/success" をフィルター条件として設定します。
このフィルターを適用すると、すべての呼び出しが 5 秒以上かかっており、/components/api/v1/http/success インターフェイスが低速な呼び出しの根本原因であることが示されます。
[時間パーセンタイル] エリアでも、平均呼び出し持続時間が 5 秒を超えていることがわかります。
属性が attributes._arms.trace.protocol.type=EagleEye のスパンのトラブルシューティング
下のチャートで、attributes._arms.trace.protocol.type: EagleEye をクリックします。

この場合、Trace Explorer は自動的に serviceName="mall-user-server" AND attributes._arms.trace.protocol.type="EagleEye" をフィルター条件として設定します。
このフィルター条件の下では、低速トレースも /components/api/v1/http/success インターフェイスを指していることがわかります。
54 件の低速トレースと 312 件の正常なトレースの比較に基づく低速トレース分析では、/components/api/v1/http/success インターフェイスを指す最上位の特徴 (低速トレースの 100%) に加えて、2 番目にランクの高い特徴はサーバー IP 10.0.0.42 (低速トレースの 46.3%)、3 番目は http コンポーネントタイプ (低速トレースの 100%) であることが示されています。
/components/api/v1/http/success インターフェイスをフィルターに追加すると、すべての呼び出しが 5 秒以上かかります。
[時間パーセンタイル] エリアでも、平均呼び出し持続時間が 5 秒を超えていることがわかります。
arms-test 名前空間内のスパンのトラブルシューティング
serviceName="mall-user-server" AND attributes.namespace="arms-test" フィルター条件の下では、低速トレースは依然として /components/api/v1/http/success インターフェイスを指していることがわかります。
54 件の低速トレースと 312 件の正常なトレースの比較に基づく不正/低速トレース分析の結果、主な貢献特徴はインターフェイス /components/api/v1/http/success であり、貢献度スコアは 1 であることが示されています。このインターフェイスは、低速トレースの 100% を占め、正常なトレースでは 0% です。
/components/api/v1/http/success インターフェイスをフィルターに追加すると、すべての呼び出しが 5 秒以上かかります。
この調査により、すべての低速な呼び出しは /components/api/v1/http/success インターフェイスから発生していると結論付けられます。attributes._arms.trace.protocol.type="EagleEye" 属性と arms-test 名前空間自体は根本原因ではありません。これらが分析に現れるのは、/components/api/v1/http/success インターフェイスサービスが arms-test 名前空間にデプロイされており、そのトレースプロトコルタイプが EagleEye であるためです。