在启用pkg / profile的情况下运行时如何获取样本?

时间:2018-09-13 19:32:53

标签: go pprof

我的主要内容如下:

func main() {
    defer profile.Start().Stop()

    fmt.Println("running version", version, "built on", date)
    fmt.Println()
    cmd.Execute()

    time.Sleep(2 * time.Second)
}

其中cmd是眼镜蛇子命令。我进行构建,然后运行二进制文件。我可以看到它生成了一个pprof文件:

2018/09/13 18:43:26 profile: cpu profiling enabled, /tmp/profile705487093/cpu.pprof
... output deleted ...
2018/09/13 18:43:31 profile: cpu profiling disabled, /tmp/profile705487093/cpu.pprof

然后我尝试使用以下方法进行分析:

go tool pprof /root/code/debug/evented /tmp/profile705487093/cpu.pprof

但是当pprof打开时,我看到了:

File: evented
Type: cpu
Time: Sep 13, 2018 at 6:43pm (UTC)
Duration: 5.49s, Total samples = 0

如果有帮助,我可以在go version go1.11 linux/amd64上运行Ubuntu 16.04.5 LTS。不确定是否重要,但我正在尝试检查DigitalOcean小滴上的pprof输出。

我在做错什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

仔细查看了个人资料pkg的注释后,通过执行以下操作,我设法获得了一些样品:

runtime.SetCPUProfileRate(5000)

在呼叫defer profile.Start().Stop()行之前。