这是我参与「第五届青训营 」伴学笔记创作活动的第13天
性能优化分析工具
这节课讲解了性能优化分析工具,介绍性能调优原则和性能调优工具pprof工具的功能说明、调优的实践应用以及采样过程和原理。
性能调优原则
(1). 要依靠数据而不是纯粹的猜测
(2). 要定位最大的瓶颈处,而不是细枝末节
(3). 不要过早、过度地优化
性能分析工具pprof
在性能调优中,人们希望知道应用在什么地方耗费了多少CPU和内存,而pprof的出现就是用于可视化和分析性能、分析数据的工具。
pprof功能简介
pprof的功能可以简要分为四大类,分别是分析(Profile)、工具(Tool)、展示(View)、采样(Sample)四种,其中分析通过网页和可视化终端呈现;工具有runtime/pprof和net/http/pprof;展示有Top、调用图(Graph)、火焰图、Peek、源码、反汇编;采样有CPU、堆内存、协程、锁、阻塞、线程创建。
pprof排查实战
要搭建一个pprof实践项目,首先下载源代码,达到能够编译运行的目的,且这一操作会占用1个CPU核心以及超过1GB的内存,提前埋入了一些炸弹代码,注意电脑性能。通过Github链接学习:
go-pprof-practice
对CPU检查:
除了在浏览器内打开本地服务器网页端进行检查,还可以通过go tool:
go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"
输入top命令,查看CPU占用情况,可以找到占用资源最多的函数。其中有一些指标:
flat 当前函数本身的执行耗时
flat% flat占CPU总时间的比例
sum% 上面每一行的flat% 总和
cum 指当前函数本身加上其调用函数的总和
cun% cum占CPU总时间的比例
输入list命令,可以根据指定的正则表达式查找代码行。
输入web命令,可以调用关系可视化。
对堆内存检查:
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap"
输入命令后,点击视图View可以选择不同的种类View,Sample有alloc_objects作为程序累计申请的对象数量、inuse_objects作为程序当前持有的对象数量、alloc_space作为程序累计申请的内存大小, inuse_space作为程序当前占用的内存大小。