すべてのプロダクト
Search
ドキュメントセンター

:Java V4.x向けARMSエージェントのパフォーマンステストレポート

最終更新日:Dec 30, 2024

Application Real-Time Monitoring Service (ARMS) エージェントは、アプリケーションの実行中にバイトコードを拡張して、アプリケーションのパフォーマンスを管理します。バイトコード拡張によって実装される他のパフォーマンス管理ソリューションと同様に、Java向けARMSエージェントは、ある程度のパフォーマンスオーバーヘッドをもたらします。ただし、ARMSチームは、アプリケーションの安定性を損なうことなく、エージェントのパフォーマンスオーバーヘッドを削減するための多くの手法を採用しています。このテストレポートでは、トラフィックの異なるシナリオをシミュレートして、Java V4.x向けARMSエージェントのパフォーマンスオーバーヘッドをテストします。アプリケーションをアプリケーションモニタリングに接続する前に、このレポートを参照して包括的な評価を行うことをお勧めします。

テストシナリオ

フローチャート

Spring MVCで開発されたJavaアプリケーションは、Alibaba Cloud Performance Testing (PTS)から送信されたリクエストに基づいてMySQLとRedisにアクセスします。${mall-gateway}/case/api/v1/mysql/executeリクエストの場合、アプリケーションはMySQLにアクセスします。${mall-gateway}/case/api/v1/redis/executeリクエストの場合、アプリケーションはRedisにアクセスします。各タイプのリクエストは、1秒あたりのクエリ数(QPS)の50%を占めます。

テスト環境

  • ストレステストのソースはPTSによって提供されます。

  • Javaアプリケーション、MySQL、およびRedisはすべて、同じAlibaba Cloud Container Service for Kubernetes (ACK) クラスタにデプロイされています。ノードのインスタンスタイプはecs.u1-c1m2.2xlargeで、ノードのオペレーティングシステムバージョンはCentOS Linux release 7.9.2009 (Core)です。

  • アプリケーションの各ポッドには、2コア、4GBのメモリ、および2つのレプリカがあります。

  • Java向けARMSエージェントのバージョンは4.1.11です。

  • サンプルコード

テスト手順

  1. 500、1,000、および2,000 QPSで3つのストレステストを実行します。各ストレステストは1時間続きます。各ストレステストの前に、Javaアプリケーションを100 QPSで3分間ウォームアップします。テスト結果は、ベースラインパフォーマンスメトリックとして使用されます。

  2. Java V4.1.11向けARMSエージェントをインストールします。サンプリングポリシーで10%のサンプリングレートを設定し、手順1のストレステストを繰り返して、JavaアプリケーションのCPUオーバーヘッド、メモリオーバーヘッド、および応答時間の違いを比較します。

  3. Java V4.1.11向けARMSエージェントをインストールします。サンプリングポリシーで100%のサンプリングレートを設定し、手順1のストレステストを繰り返して、JavaアプリケーションのCPUオーバーヘッド、メモリオーバーヘッド、および応答時間の違いを比較します。

説明

ベースラインパフォーマンスメトリック

項目

CPU

メモリ

応答時間(単位:ミリ秒)

500 QPS

5.9%

12.1%

57.4

1,000 QPS

11.1%

12.3%

63.2

2,000 QPS

20.9%

12.7%

70.3

説明
  • CPUメトリックは、ポッドが使用しているCPUの合計CPU(2コア)に対する割合を表します。

  • メモリメトリックは、ポッドが使用しているメモリの合計メモリに対する割合を表します。ポッドによって使用されるメモリは、リクエスト値に達するまで自然に増加するため、レポートではストレステストの終了時の実際のメモリ使用量を使用しています。

  • 応答時間メトリックは、リクエストの平均応答時間を表します。単位:ミリ秒。

Java V4.x向けARMSエージェントのパフォーマンスメトリック

項目

10%サンプリングレート

100%サンプリングレート

CPU

メモリ

応答時間(単位:ミリ秒)

CPU

メモリ

応答時間(単位:ミリ秒)

500 QPS

7.5%

14.8%

58.1

8.9%

15.2%

58.2

1,000 QPS

14.6%

15.3%

64.6

15.5%

15.9%

64.8

2,000 QPS

27.3%

16.7%

74.2

27.8%

17.4%

75.8

説明

サンプリングレートとCPUおよびQPSの両方との関係は非線形です。デフォルトでは、1秒あたりのトレース収集に上限があります。

Java V4.x向けARMSエージェントのパフォーマンスオーバーヘッド

項目

10%サンプリングレート

100%サンプリングレート

CPU

メモリ

応答時間(単位:ミリ秒)

CPU

メモリ

応答時間(単位:ミリ秒)

500 QPS

+1.6%

+2.7%

+0.7

+3.0%

+3.1%

+0.8

1,000 QPS

+3.5%

+3.0%

+1.4

+4.4%

+3.6%

+1.6

2,000 QPS

+6.4%

+4.0%

+3.9

+6.9%

+4.7%

+5.5

結論

  1. Java V4.x向けARMSエージェントによって引き起こされる追加のCPUおよびメモリオーバーヘッドは10%以内です。

  2. Java V4.x向けARMSエージェントは応答時間(10%)への影響が小さく、1,000 QPSでは1ミリ秒しか増加しません。

  3. 100%の固定サンプリングレートでのパフォーマンスオーバーヘッドは、10%の固定サンプリングレートでのパフォーマンスオーバーヘッドよりもわずかに大きくなります。