这是我参与「第五届青训营 」伴学笔记创作活动的第 6天 课程内容为:性能优化分析工具。
性能优化分析工具
实际生产中如何性能调优
简介
性能调优原则
要依靠数据不是猜测
要定位最大瓶颈而不是细枝末节
不要过早优化
不要过度优化
性能分析工具 pprof
说明
希望知道应用在什么地方耗费了多少 CPU、Memory
pprof 是用于可视化和分析性能分析数据的工具
pprof 功能简介
pprof 排查实战
pprof 的采样过程和原理
搭建 pprof 实践项目
前置准备
下载项目代码,能够编译运行
会占用1CPU核心和超过1GB的内存
CPU
命令:topN
查看占用资源最多的函数
flat 当前函数本身的执行耗时
flat% flat 占 CPU 总时间的比例
cum 指当前函数本身加上其调用函数的总耗时
cum% cum 占 CPU 总时间的比例
Flat == Cum,函数中没有调用其他函数
Flat == 0,函数中只有其他函数的调用
命令:list
根据指定的正则表达式查找代码行
命令:web 调用关系可视化
命令:web
调用关系可视化
Heap-内存堆
Top视图
Source视图
alloc_objects:程序累计申请的对象数
inuse_objects:程序当前持有的对象数
alloc_space:程序累计申请的内存大小
inuse_space:程序当前占用的内存大小
goroutine-协程
goroutine泄露也会导致内存泄露
由上到下表示调用顺序
每一块代表一个函数,越长代表占用 CPU 的时间更长
火焰图是动态的,支持点击块进行分析
总结
性能分析工具 pprof
分析-Profile:网页、可视化终端
展示-View:Top、调用图-Graph、火焰图-FlameGraph、Peek、源码-Source
工具-Tool:runtime/pprof、net/http/pprof
采样-Sample:CPU、堆内存-Heap、协程-Goroutine、锁-Mutex、阻塞-Block、线程创建-ThreadCreate