@
zarte #9
我平常是这么做的,代码里面加上下面的内容:
import _ "net/http/pprof"
go func() {
log.Println( http.ListenAndServe("localhost:6060", nil))
}()
然后需要分析性能时直接运行下面的命令:
分析 cpu 占用:go tool pprof --web 编译出来的文件.exe http://127.0.0.1:6060/debug/pprof/profile
分析内存占用:go tool pprof -inuse_space --web 编译出来的文件.exe http://127.0.0.1:6060/debug/pprof/heap
可以直接生成 SVG 调用图,很清晰。图是使用 graphviz 生成的,需要在本机安装 graphviz。
如果没有 graphviz,可以去掉 --web 参数,是 cmd 版本。
线上环境推荐这种方式,另外可以浏览器访问 http://127.0.0.1:6060/debug/pprof,里面有不少有用的内容。
如果本身有 http 服务,可以看下 net/http/pprof init() 函数代码,可以照着合并到已有的 http 服务内。