gpt4 book ai didi

go - 如何分析 goroutines 的数量

转载 作者:IT王子 更新时间:2023-10-29 00:51:07 27 4
gpt4 key购买 nike

基本上我想知道我的程序是否随着时间的推移泄漏 goroutines。所以我想看看随着时间的推移有多少 goroutines 在运行。有什么办法可以通过 pprof 做到这一点吗?

我已经完成了 go tool pprof http://localhost:8888/debug/pprof/block

这会告诉我被阻止的时间,但不会告诉我有多少例程正在运行。

最佳答案

打开http://localhost:8888/debug/pprof/在您的浏览器中。您会看到两个相关链接:“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

这两个 goroutine 之一,这就是 @ 之前的 1 的意思。

完整转储对于查找泄漏非常有用,它会分别向您显示每个 goroutine,以及它的堆栈跟踪和它正在做什么(例如它等待从 channel 接收的时间):

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

关于go - 如何分析 goroutines 的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com