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

Application Real-Time Monitoring Service:Go アプリケーションの継続的プロファイリング

最終更新日:Apr 28, 2025

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

前提条件

  • アプリケーションが Application Monitoring によって監視されていること。

  • Go 用 ARMS エージェントのバージョンが 1.3.0 以降であること。アプリケーション詳細ページで [構成] > [エージェント管理] を選択すると、エージェントのバージョンを表示できます。

継続的プロファイリングを有効にする

  1. ARMS console にログインします。左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーションリスト] を選択します。

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

    説明

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

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

    image: Go アプリケーション

    image: Python アプリケーション

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

  3. 上部のナビゲーションバーで、[構成] > [カスタム構成] を選択します。

  4. [継続的プロファイリング設定] セクションで、[マスタースイッチ] とその他のスイッチを必要に応じてオンにします。

    image

  5. [保存] をクリックし、変更が有効になるまで 2 分待ちます。

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

  1. ARMS console にログインします。左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーションリスト] を選択します。

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

    説明

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

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

    image: Go アプリケーション

    image: Python アプリケーション

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

  3. 上部のナビゲーションバーで、[アプリケーション診断] > [継続的プロファイリング] を選択します。

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

  5. 右側のペインの [シングルビュー] タブで、次の操作を実行してデータのクエリと集約分析結果を表示します。

    2025-04-23_13-43-58

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

    2. ドロップダウンリスト (アイコン 2) から、表示するデータ (CPU、Go ヒープ、ゴルーチン、ミューテックス、ブロック) を選択します。

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

    4. パフォーマンス分析

      • CPU Time: 要求された CPU コア数。

        image

      • Allocated Memory: 要求されたメモリサイズ。

        image

      • Allocations: メモリ要求数。メモリ要求数に基づいて、頻繁にメモリを要求するメソッドを表示できます。

        image

      • goroutine:

        image

      • Mutex:

        mutexContentions:

        image

        mutexDelay:

        image

      • Block:

        blockContentions:

        image

        blockDelay:

        image

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

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

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

      スナップショットリスト

      image

参照

継続的プロファイリング機能を使用して、高い CPU 使用率とメモリ使用率のトラブルシューティングを行うことができます。次のトピックを参照してください。