性能优化(2)| 青训营笔记

16 阅读1分钟

性能优化分析工具

原则:

  • 要靠数据,不要靠猜测
  • 要定位最大瓶颈而不是细枝末节
  • 不要过早优化
  • 不要过度优化(防止出现新功能无法兼容)

pprof

希望知道应用在什么地方消耗了多少CPU,memory pprof是用于可视化和分析性能分析数据的工具

pprof功能简介

image.png

打开项目,输入localhost:6060/debug/pprof/的地址,如下图

image.png

包含了对内存,阻塞,协程,内存的处理,锁的操作

通过命令

go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"

来采集服务的性能数据

image.png 输入top

image.png flat:本身执行的耗时 flat%:占cpu总时间的比例 sum:每一行flat%的总和 cum:当前函数本身的消耗,加上它可能调用的其他函数的总消耗耗时 cum%:占cpu总时间的比例

通过结果我们不难发现,tiger.eat文件占用了最多(最大的性能瓶颈)

Flat==Cum,函数中没有调用其他函数 Flat=0,函数中只有其他函数的调用

通过list Eat来看看具体是哪里出了问题

image.png

找到了问题所在

关于内存:

通过命令:

go tool pprof -http=:8080 "<http://localhost:6060/debug/pprof/heap>"

想使用可视化web窗口,需要先安装graphviz Download | Graphviz 下载并将bin添加到path当中,并重新启动项目!

image.png

关于协程 通过命令:

go tool pprof -http=:8080 "<http://localhost:6060/debug/pprof/goroutine>"

关于锁 通过命令:

go tool pprof -http=:8080 "<http://localhost:6060/debug/pprof/mutex>"

pprof排查实战

pprof的采样过程和原理