pprof を使用して Go アプリケーションの goroutine リークを監視およびトラブルシューティングするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-29 03:25:02
オリジナル
199 人が閲覧しました

How can I use pprof to monitor and troubleshoot goroutine leaks in my Go application?

pprof によるゴルーチン数の監視

ゴルーチン リークの検出と防止には、ゴルーチン数のプロファイリングが不可欠です。 pprof は、Goroutine アクティビティを経時的に監視する便利なツールを提供します。

Goroutine Count Visualization

アクティブな Goroutine の数を視覚化するには、http://localhost:8888/debug を開きます。ブラウザで /pprof/ をクリックします。このページには 2 つの関連リンクがあります:

  • Goroutine: http://localhost:8888/debug/pprof/goroutine?debug=1
  • 完全な goroutine スタック ダンプ: http://localhost:8888/debug/pprof/goroutine?debug=2

「goroutine」リンクには、一意の goroutine スタック トレースのリストが表示されます。それぞれのインスタンスの数。例:

1 @ 0x42f223 0x42f2e4 0x40542f 0x404f4b 0x4a0586 0x4600a1
#   0x4a0586    gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers+0x56   /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:164
ログイン後にコピー

プレフィックス「1」は、このゴルーチンのアクティブなインスタンスが 1 つだけであることを示します。

完全なゴルーチン ダンプ

完全な goroutine ダンプはより詳細であり、goroutine リークを正確に特定するのに役立ちます。各ゴルーチン、そのスタック トレース、チャネルの待機時間などの追加情報が個別にリストされます。

goroutine 49 [chan receive, 2 minutes]:
gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers(0xc820103ee0, 0xc820274000, 0xc820274060, 0xc8201d65a0)
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:164 +0x56
created by gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).Run
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:294 +0x41b
ログイン後にコピー

完全なダンプ内のスタック トレースと追加情報を分析することで、そうでないゴルーチンを特定できます。適切に終了または無期限にブロックされます。

以上がpprof を使用して Go アプリケーションの goroutine リークを監視およびトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート