pprof支持两种方式记录性能 1、runtime/pprof 2、net/http/pprof ,两种方式均可分析,哪种方便用哪种。
一般使用第二种比较方便,只要在代码里加上一个函数, 就可以在运行的时候通过访问http://127.0.0.1:1233/debug/pprof/ 获取运行信息
go func() {
http.ListenAndServe(":1233", nil)
}()
此时可以使用 go tool pprof http://127.0.0.1:1233/debug/pprof/profile 命令行分析CPU运行信息(最后的profile可换成其他需要的信息),命令行出现如下信息,类似gdb调试
使用top命令排序所有耗CPU的信息
这里只有一个耗时的函数 main函数里的testgo。 使用list命令查看testgo函数里的耗时语句
可以看到所有时间基本都消耗在 14行。 很明显14行是一个死循环。好了,pprof的基本使用方式就介绍到这里,另一种是通过runtime包,在代码里输入以下代码,可以将cpu信息输出到指定文件,然后使用go tool pprof cpu.pro 命令来查看信息方法与上面一样。