性能优化分析工具
调优原则
- 要依靠数据
- 要定位最大瓶颈
- 不要过早优化
- 不要过度优化
性能分析工具pprof
- 希望知道应用消耗了多少CPU,Memory
- pprof提供了可视化和性能分析工具
实战
CPU
go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"
- 命令:TopN,查看占用资源最多的函数
- 指标介绍
- flat:函数本身耗时
- flat%:占用CPU时间占比
- sum%:上面每一行的flat%的总和
- cum:当前函数和调用函数的总时长
- cum%:cim占据CPU总时间的比例
- 命令:list,根据指定的正则表达式查询代码行
可以看到对应的loop占用了最多的调用时间
- 命令:web,调用关系可视化
注意安装对应的gvedit并且添加环境变量
定位并且修改后重新运行并查看
堆内存
go tool -http=:8080 "http://localhost:6060/debug/pprof/heap"
- Top视图,类似与top命令
- Source视图,类似list命令
指标介绍
- alloc_objects:程序累计申请的对象数
- alloc_space:程序当前持有的对象数
- inuse_objects:程序累计申请的内存大小
- inuse_space:程序当前占用的内存大小
goroutine——协程
goroutine泄露也会导致内存泄露
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"
火焰图
- 从上倒下表示调用顺序
- 每一块代表一个函数,越长代表耗时越多
- 火焰图是动态的,支持点击块分析
锁
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"
标题:性能优化分析工具 - 掘金