这是我参与「第五届青训营」伴学笔记创作活动的的第6天
go语言性能分析工具pprof
1.简介
性能调优原则:要依靠数据不是猜测,要定位最大瓶颈而不是细枝末节,不要过早优化,也不要过度优化。
2.性能分析工具pprof
pprof是用于可视化和分析性能分析数据的工具。
实战:1.搭建pprof实践项目。
2.浏览器查看指标。
3.CPU里查看:
命令:list:根据指定的正则表达式查找代码行。
web:调用关系可视化。
采样过程:
采样对象:函数调用和它们占用的时间。
采样率:100次/秒,固定值。
采样时间:从手动启动到手动结束。
操作系统:每10ms向进程发送一次SIGPROF信号。
进程:每次接收到SIGPROF会记录调用堆栈。
写缓冲:每100ms读取已经记录的调用栈并写入输出流。
4.Heap-堆内存:Top视图,Source视图。
采样过程:
采样程序通过内存分配器在堆上分配和释放的内存,记录分配/释放的大小和数量。
采样率:每分配512KB记录一次,可在运行开头修改,1为每次分配均记录。
采样时间:从程序运行开始到采样时。
采样指标: alloc_space, alloc_objects, inuse_space, inuse_objects
计算方式: inuse = alloc - free
5.goroutine-协程:goroutine泄露也会导致内存泄露。
由上到下表示调用顺序,每一块代表一个函数,越长代表占用CPU的时间更长火焰图是动态的,支持点击块进行分析。
6.mutex-锁
锁竞争:采样争抢锁的次数和耗时。
采样率:只记录固定比例的锁操作,1为每次加锁均记录。
7.block-阻塞
阻塞操作:采样阻塞操作的次数和耗时
采样率:阻塞耗时超过阈值的才会被记录,1为每次阻塞均记录。