ホームページ  >  記事  >  バックエンド開発  >  pprof を使用して Go プログラム内のゴルーチンの数をプロファイリングするにはどうすればよいですか?

pprof を使用して Go プログラム内のゴルーチンの数をプロファイリングするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 02:06:03102ブラウズ

How do you use pprof to profile the number of goroutines in your Go program?

pprof を使用したゴルーチンの数のプロファイリング

Go プログラム内の潜在的なゴルーチン リークを検出するには、アクティブなゴルーチンの数を長期的に監視する必要があります。標準の go ツール pprof コマンドはブロックに関する洞察を提供しますが、ゴルーチンの数に直接対処するものではありません。

ゴルーチンの数を効果的にプロファイリングするには、ブラウザで http://localhost:8888/debug/pprof/ を開きます。 。これには 2 つの関連リンクが表示されます:

  • Goroutine: http://localhost:8888/debug/pprof/goroutine?debug=1
  • Full Goroutine Stack Dump: 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 @ 0x42f223 0x43dfd7 0x43d532 0x4a04ed 0x4600a1
#   0x4a04ed    gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).processRunners+0x45d    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:147

@ の前の数字 1 は、各ゴルーチンの 1 つのインスタンスを示します。

完全なゴルーチン スタック ダンプは、リーク検出に特に役立ちます。スタック トレースやアクティビティ ステータスを含め、各ゴルーチンを個別にリストします。

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

goroutine 50 [select]:
gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).processRunners(0xc820103ee0, 0x0, 0xc820274060, 0xc8201d65a0)
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:147 +0x45d
created by gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:165 +0x96

これらの pprof エンドポイントを利用すると、プログラム内のゴルーチンの数を効果的に監視でき、潜在的なゴルーチンの検出と解決に役立ちます。漏れます。

以上がpprof を使用して Go プログラム内のゴルーチンの数をプロファイリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。