这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记。
实验流程:golang pprof 实战 | Wolfogre's Blog
实验准备:Graphviz
Windows安装Graphviz:Download | Graphviz 找到对应的安装包,下载安装时注意勾选add path to all user自动添加和环境变量(不然需要手动添加有点麻烦)。完成后打开cmd,输入pip install graphviz,然后输入dot -version检查是否成功。
开始实验:GitHub - wolfogre/go-pprof-practice: go pprof practice.
克隆代码到本地,通过pprof检查cpu占有率,内存占有率,内存回收频率,协程泄露,锁的争用,以及阻塞时间。
- top命令会对使用率进行排序
- list xxx命令检查函数、方法中出问题的代码块
- web命令生成可视化视图。 服务器运行后另外开启终端,在服务器所在的目录内输入一下命令进行检查:
- cpu检查:
go tool pprof http://localhost:6060/debug/pprof/profile - 内存检查:
go tool pprof http://localhost:6060/debug/pprof/heap - 内存回收:
GODEBUG=gctrace=1 ./go-pprof-practice | grep gc查看内存请求与释放日志,go tool pprof http://localhost:6060/debug/pprof/allocs进行检查 - 协程泄露:
go tool pprof http://localhost:6060/debug/pprof/goroutine - 锁的争用:
go tool pprof http://localhost:6060/debug/pprof/mutex - 阻塞排查:
go tool pprof http://localhost:6060/debug/pprof/block