Application Monitoring の継続的プロファイリング機能は、Go プログラムにおける CPU、メモリ、または I/O によって引き起こされるボトルネックを効果的に発見し、メソッド名、クラス名、および行番号別に統計データを表示できます。これにより、開発者はプログラムを最適化し、レイテンシを削減し、スループットを向上させ、コストを節約できます。このトピックでは、継続的プロファイリング機能を有効にする方法と、プロファイリングデータを表示する方法について説明します。
前提条件
アプリケーションが Application Monitoring によって監視されていること。
Go 用 ARMS エージェントのバージョンが 1.3.0 以降であること。アプリケーション詳細ページで を選択すると、エージェントのバージョンを表示できます。
継続的プロファイリングを有効にする
ARMS console にログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリケーションリスト] ページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明[言語] 列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
: Java アプリケーション
: Go アプリケーション
: Python アプリケーションハイフン ([-]): Managed Service for OpenTelemetry で監視されるアプリケーション。
上部のナビゲーションバーで、 を選択します。
[継続的プロファイリング設定] セクションで、[マスタースイッチ] とその他のスイッチを必要に応じてオンにします。

[保存] をクリックし、変更が有効になるまで 2 分待ちます。
プロファイリングデータを表示する
ARMS console にログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリケーションリスト] ページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明[言語] 列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
: Java アプリケーション
: Go アプリケーション
: Python アプリケーションハイフン (-): Managed Service for OpenTelemetry で監視されているアプリケーション。Managed Service for OpenTelemetry
上部のナビゲーションバーで、 を選択します。
アプリケーションインスタンスリストで、アプリケーションインスタンスを選択します。ページの右側で、期間を設定します。
右側のペインの [シングルビュー] タブで、次の操作を実行してデータのクエリと集約分析結果を表示します。

[タイムウィンドウサイズ] セクション (アイコン 1) で、スナップショット期間を選択し、折れ線グラフをドラッグして期間を選択します。
ドロップダウンリスト (アイコン 2) から、表示するデータ (CPU、Go ヒープ、ゴルーチン、ミューテックス、ブロック) を選択します。
図のように、期間内 (アイコン 3) のデータが表示されます。[集約分析] をクリックして、スナップショットの詳細を表示できます。
パフォーマンス分析
CPU Time: 要求された CPU コア数。

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

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

goroutine:

Mutex:
mutexContentions:

mutexDelay:

Block:
blockContentions:

blockDelay:

説明Self 列には、各メソッドがスタック内で消費した時間またはリソースが表示されます。子メソッドが消費した時間またはリソースは含まれません。このデータを使用して、自身のために過剰な時間またはリソースを費やしているメソッドを特定できます。
Total 列には、各メソッドが消費した時間またはリソースが表示されます。すべての子メソッドが消費した時間またはリソースが含まれます。このデータを使用して、最も多くの時間またはリソースを費やしているメソッドを特定できます。
ホットスポットコードを分析する場合、Self 列または右側のフレームグラフの下部にある幅の広いフレームに注目することで、時間のかかるメソッドを見つけることができます。一般的に、幅の広いフレームはシステムパフォーマンスのボトルネックを示します。
スナップショットリスト

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