プロファイラーラベルの使用
ゴルーチンは、他の関数またはメソッドと同時に実行される関数またはメソッドです。 ゴルーチンを作成するには、 go キーワードに続けて関数呼び出しを使用します(たとえば、 go func(p string, rid int64))。 ただし、多数のゴルーチンを使用すると、プログラムのデバッグが困難になります。 ゴルーチンを区別するために、ゴルーチンにカスタムデータのラベルを付けることができます。
Go 1.9 以降、追加の情報を記録して、実行パスに関するより多くのコンテキストを提供できます。 ラベルのセットをプロファイリングデータの一部として記録し、後でこれらのラベルを使用してプロファイラーの出力を調べることができます。
例: どこかで作成されたイベントを処理するキューハンドラーがあります。 ハンドラーは、これらのイベントが作成された場所を識別するラベルを設定できます。
デバッグおよびコアダンプ分析中に、コンテキスト情報が役立つ場合があります。 例: この情報を使用して、特定のゴルーチンをより簡単に見つけることができます。
ラベルを追加する
runtime/pprof パッケージには、ラベルを追加するために使用できるいくつかの新しい関数があります。 最も一般的なのは Do 関数です。 Do 関数はコンテキストを取得し、このコンテキストにラベルを追加して、新しいコンテキストを f 関数に渡します。
Do 関数は、現在のゴルーチンにのみラベルを書き込みます。 f 関数で新しいゴルーチンを作成する場合、引数としてコンテキストを渡すことができます。
IntelliJ IDEA でのラベルの表示
説明のために、 GitHub から次のコード例(英語)をコピーします。
println("ok") が呼び出される場所にブレークポイントを設定します。 ブレークポイントを設定するには、21 行目のガターをクリックします。 main 関数のデバッグを実行します。 デバッグを開始するには、 main 関数の近くのガターにある 実行 アイコン( )をクリックし、 <run_debug_configuration_name> のデバッグ を選択します。 ゴルーチン リストから、使用可能なゴルーチンを確認します。

Ctrl+F2 を押してデバッグを停止します。 f(ctx) 呼び出しを削除し、 Do 関数のコメントを外します。 ⌃ ⇧ D を押して、デバッグプロセスを再実行します。 ゴルーチン リストを調べます。 ゴルーチン名には次の情報が含まれています: /api/profile, userId: <some number>。 この情報を使用して、デバッグまたはコアダンプ分析中に特定のゴルーチンを見つけることができます。

お役立ちリンク
デバッグ中にゴルーチンを見つける方法 (英語): IntelliJ IDEA でプロファイラータグを使用する方法に関するチュートリアルを参照してください。
rakyll.org の Go のプロファイラーラベル (英語): プロファイラーラベルの詳細を参照してください。