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

:継続的プロファイリング機能を使用する

最終更新日:Dec 30, 2024

アプリケーションモニタリングの継続的プロファイリング機能は、JavaプログラムにおけるCPU、メモリ、またはI/Oによって引き起こされるボトルネックを効果的に発見し、メソッド名、クラス名、および行番号別に統計データを表示できます。これにより、開発者はプログラムを最適化し、レイテンシを削減し、スループットを向上させ、コストを節約できます。このトピックでは、継続的プロファイリング機能を有効にする方法と、プロファイリングデータを表示する方法について説明します。

継続的プロファイリング機能のパフォーマンステストが実施されました。主流のSpring Webアプリケーションのすべての機能が有効になっている場合、CPU使用率は約5%増加し、オフヒープメモリ使用量は約50 MB増加しましたが、ガベージコレクション(GC)とリクエストレイテンシはほとんど増加しませんでした。

前提条件

重要
  • 継続的プロファイリングは、アプリケーションモニタリングProエディションと従量課金(オブザーバブルデータ)モードでのみサポートされています。Proエディションのアクティブ化方法については、従量課金を参照してください。従量課金(オブザーバブルデータ)モードへの切り替え方法については、課金を参照してください。

  • 継続的プロファイリング機能は、Alibaba Finance CloudおよびAlibaba Gov Cloudの一部のリージョンではサポートされていません。これらのリージョンでこの機能を使用する場合は、DingTalkグループ(ID:22560019672)に参加して技術サポートを受けてください。

  • 継続的プロファイリングデータは7日間のみ保存できます。

  • アプリケーションはアプリケーションモニタリングによって監視されています。ARMSエージェントのバージョンは2.7.3.5以降です。アプリケーションモニタリングでアプリケーションを監視する方法については、アプリケーションモニタリングの概要を参照してください。ARMSエージェントをアップグレードする方法については、ARMSエージェントの更新を参照してください。

  • アプリケーションが存在する仮想プライベートクラウド(VPC)のアクセス制御ポリシーで、オブジェクトストレージサービス(OSS)バケットが指定されています。OSSバケットは、プロファイリングデータを保存するために使用されます。ポリシーでバケットが指定されていない場合、データは収集できません。OSSバケットの名前はarms-profiling-<regionId>です。<regionId>をリージョンIDに置き換えます。たとえば、アプリケーションが中国(杭州)リージョンにデプロイされている場合、バケット名はarms-profiling-cn-hangzhouです。

  • 継続的プロファイリング機能は、OpenJDKおよびOracle JDKでのみ使用できます。

制限事項

オペレーティングシステムカーネル

オペレーティングシステムカーネルは、Linux 2.6.32-431.23.3.el6.x86_64以降である必要があります。

説明

uname -rコマンドを実行して、カーネルバージョンをクエリできます。

JDKバージョン

継続的プロファイリング機能は、Java Virtual Machine Tool Interface(JVM TI)を使用して、アプリケーションのメソッドスタックを取得します。これにより、アプリケーションの実行中にCPU使用率とメモリ使用量の detaljer を取得できます。JVM TIはアプリケーションのクラッシュを引き起こす可能性があります。次のJDKバージョンでは、この問題が修正されています:OpenJDK 8u352、11.0.17、および17.0.5、およびOracle JDK 11.0.21および17.0.9。詳細については、AsyncGetCallTrace may crash JVM on guaranteeを参照してください。その他のJDKバージョンについては、アプリケーションモニタリングR&Dチームがさまざまなテストを実施し、アプリケーションのクラッシュはごく少数のシナリオでのみ発生することを発見しました。アプリケーションモニタリングは、継続的プロファイリング機能を強制的に無効にすることはありません。必要に応じて、特定のアプリケーションIPアドレスに対してこの機能を使用できます。それでも、アプリケーションの安定性を確保するために、要件を満たすJDKバージョンを使用することをお勧めします。

継続的プロファイリング機能は、主にJDKのデバッグシンボルに依存しています。ただし、Alpineベースイメージは、メモリ使用量を制御するためにJDKからデバッグシンボルを削除します。このため、継続的プロファイリング機能は期待どおりに使用できません。Alpineベースイメージを使用しないことをお勧めします。

次の表に、推奨されるJDKバージョンを示します。

JDK

バージョン

OpenJDK

  • OpenJDK 8u352+

  • OpenJDK 11.0.17+

  • OpenJDK 17.0.5+

Oracle JDK

  • Oracle JDK 11.0.21+

  • Oracle JDK 17.0.9+

ARMSコンソールで継続的プロファイリング機能を有効にする

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、アプリケーションモニタリング > アプリケーションリストを選択します。

  2. アプリケーションリストページで、上部ナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。

    説明

    言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。

    Java图标:Javaアプリケーション

    image:Goアプリケーション

    image:Pythonアプリケーション

    ハイフン(-):Managed Service for OpenTelemetryで監視されているアプリケーション。

  3. 左側のナビゲーションペインで、アプリケーション設定をクリックします。表示されるページで、カスタム設定タブをクリックします。

  4. 継続的プロファイリング セクションの カスタム構成 タブで、メインスイッチ をオンにし、IP ホワイトリスト または ネットワークセグメントアドレス パラメーターを構成します。

  5. カスタム設定タブで、保存をクリックします。

プロファイリングデータを表示する

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、アプリケーションモニタリング > アプリケーションリストを選択します。

  2. アプリケーションリストページで、上部ナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。

    説明

    言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。

    Java图标:Javaアプリケーション

    image:Goアプリケーション

    image:Pythonアプリケーション

    ハイフン(-):Managed Service for OpenTelemetryで監視されているアプリケーション。

  3. 左側のナビゲーションペインで、継続的プロファイリングをクリックします。

  4. アプリケーションインスタンスリストで、アプリケーションインスタンスを選択します。ページの右側で、期間を設定します。

  5. 右側のペインの単一ビュータブで、次の操作を実行してデータをクエリし、集計分析結果を表示します。

    数据展示

    1. 時間枠サイズセクション(アイコン1)で、スナップショット期間を選択し、折れ線グラフをドラッグして期間を選択します。

    2. ドロップダウンリスト(アイコン2)から、表示するデータ(CPU、JVMヒープ、JVM GCに関するデータ)を選択します。

    3. 図のように、期間内(アイコン3)のデータが表示されます。集計分析をクリックして、スナップショットの詳細を表示できます。

      図1. パフォーマンス分析性能分析

      • Self列には、各メソッドがスタック内で消費した時間またはリソースが表示されます。子メソッドが消費した時間またはリソースは含まれません。このデータを使用して、自身のために過剰な時間またはリソースを費やしているメソッドを特定できます。

      • Total列には、各メソッドが消費した時間またはリソースが表示されます。すべての子メソッドが消費した時間またはリソースが含まれます。このデータを使用して、最も多くの時間またはリソースを費やしているメソッドを特定できます。

      ホットスポットコードを分析する場合、Self列または右側のフレームグラフの下部にある幅の広いフレームに注目することで、時間のかかるメソッドを見つけることができます。一般的に、幅の広いフレームはシステムパフォーマンスのボトルネックを示します。

      図2. メトリクス指标列表

      図3. スナップショット快照列表

  6. 比較ビュータブでは、2つの期間に生成されたデータを比較および分析できます。

ホットスポットコード機能を使用する

継続的プロファイリング機能に加えて、ホットスポットコード分析機能も有効にできます。これにより、継続的プロファイリング技術を使用して、リクエストスレッドのスタックスナップショットを定期的に収集し、コードの実行をシミュレートできます。詳細については、ホットスポットコード分析機能を使用して低速トレースを診断するを参照してください。