Go/pprof 性能调优
总结:
性能调优的两个方向:CPU 和 内存
工具:`go tool pprof cpu.pprof`
`go tool pprof mem.pprof`
图:调用图 和 火焰图
1.Go语言内置了获取程序的运行数据的工具,包括以下两个标准库:
1.runtime/pprof : 采集工具型应用运行数据进行分析
2.net/http/pprof: 采集服务型应用运行时数据进行分析
2.性能调优原理: pprof 开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取各个函数占用的CPU以及内存资源;最后通过这个采集数据进行分析,形成一个性能分析报告。
3.注意:我们只应该在性能测试的时候才在代码中引用pprof.
注:如果你使用的是gin框架推荐用
github.com/DeanThompson/ginpprof
4.性能分析
a.go tool pprof 命令
[learnstuday\day13\11pprof_demo]
1. pprof_demo.exe -cpu=true
2. go tool pprof [binary] [source]
b.图形化
1.graphviz:
go tool pprof [binary] [source]进入,直接输入web,通过浏览器svg图的方式查看程序中详细的CPU占用情况。
2.火焰图(Flame Graph)和go-torch
火焰图使用go-torch工具(uber开源的工具),可以直接读取 golang profiling 数据,并生成一个火焰图的svg文件
注:要生成火焰图,需要事先安装 FlameGraph工具,这个工具的安装很简单(需要perl环境支持),只要把对应的可执行文件加入到环境变量中即可。
转载:https://www.liwenzhou.com/posts/Go/performance_optimisation/