golang性能调优:pprof实验| 青训营笔记

227 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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