使用pprof进行性能分析
说明
自go的1.10版本后,就不再需要第三方的工具了(例如go-pprof和google/pprof),直接用官方的cli工具即可。唯一需要安装的是Graphviz,安装方法见官网(windows安装完成后需要在有管理员权限的cmd窗口输入dot -c注册插件)。
使用方式一:查看报告
- Web项目的集成办法:
- 项目使用默认的http.DefaultServeMux,则直接import _ “net/http/pprof”
- 项目使用自定义的Mux,先import net/http/pprof,再注册如下路由
- r.HandleFunc(“/debug/pprof/“, pprof.Index)
- r.HandleFunc(“/debug/pprof/cmdline”, pprof.Cmdline)
- r.HandleFunc(“/debug/pprof/profile”, pprof.Profile)
- r.HandleFunc(“/debug/pprof/symbol”, pprof.Symbol)
- r.HandleFunc(“/debug/pprof/trace”, pprof.Trace)
- 非Web项目的集成办法:
- 方法1:先
import "runtime/pprof"
,然后在需要的地方pprof.StartCPUProfile(f)和pprof.StopCPUProfile(),将报告日志写入文件句柄f - 方法2:先
import _ "net/http/pprof"
,再开启一个线程来监听:log.Println(http.ListenAndServe("0.0.0.0:6060", nil))
- 方法1:先
对于Web项目,查看报告直接访问项目地址/debug/pprof/就可以了,对于非Web项目,则使用go tool pprof 报告日志
使用方式二:查看调用关系图和火焰图
在方式一的基础上,输入go tool pprof -http :8080 localhost:6060
然后访问localhost:8080 即可。
本作品采用《CC 协议》,转载必须注明作者和本文链接