2.7性能刨析与事件追踪
2.7.1pprof性能刨析
性能分析工具:pprof,可以捕捉多维度的运行状态数据,也是CPU分析器,是gperftools工具的一个组件
·runtime/pprof:采集程序的运行数据进行分析
·net/http/pprof:采集HTTP服务器的运行数据进行分析
(1)pprof能做:·CPU分析
·内存分析
·阻塞分析
·互斥锁分析
(2)使用方式:
1)web形式,导入net/http/pprof包,并在主函数中添加一下代码
2)profile交互式终端文件形式:go tool pprof[binary][source]//数据分析
·lbinary:应用的二进制文件,用来解析各种符号
·lsource:表示profile数据的来源,可以是本地的文件,也可以是HTTP地址
flag.Type()命令行参数的解析,Type包含Int、String、Bool 等,返回值为一个相应类型的指针
flag.Parse() 来对命令行参数进行解析。
log.Fatal () 在控制台屏幕上打印带有时间戳的指定消息。
pprof.StartCPUProfile()在被调用的时候,先会去设定 CPU 概要信息的采样频率,并会在单独的 goroutine 中进行 CPU 概要信息的收集和输出。注意,StartCPUProfile函数设定的采样频率总是固定的,即:100赫兹
对以上代码进行CPU分析,执行
go run main.go --cpuprofile=cpu.prof
会在当前路径下生成cpu.prof文件,然后执行
go tool pprof main.go cpu.prof
go tool pprof http://localhost:8801/debug/pprof/profile?seconds=60追踪上面代码60s内CPU的消耗情况,执行命令后,需要等待60s,默认进入pprof交互式命令行中,topN查询程序CPU消耗最大的调用
flat:给定函数上的运行耗时
flat%:给定函数上的CPU运行耗时占比
sum%:给定函数累计使用CPU总比例
cum:当前函数加上它们之前的调用运行总耗时
cum%:当前函数加上它们之前的调用CPU运行耗时占比
(3)火焰图分析
安装pprof原生工具:go get -u github.com/google/pprof
启动火焰图可视化工具:pprof -http=:8080 profile文件名
2.7.2trace事件追踪
trace事件追踪步骤:
·编译并运行既定好的数据文件
·执行go tool trace myTrace.out命令