golang性能分析 pprof的使用 graphviz
- 1 参考文档
- 2 pprof、Graphviz介绍
- 3 Graphviz下载 安装
- 4 使用
1 参考文档
参考1:golang性能分析,pprof的使用,graphviz,火焰图
参考2:Golang中的pprof分析环境搭建【Windows环境】
参考3:pprof性能分析-火焰图
2 pprof、Graphviz介绍
pprof:是golang 自带性能剖析工具,可以帮助定位程序中可能存在的问题,是go服务程序异常时辅助排查问题的有效工具。
Graphviz:是开源的图形可视化软件。图形可视化是一种将结构信息表示为抽象图形和网络图的方法。它在网络,生物信息学,软件工程,数据库和网页设计,机器学习以及其他技术领域的可视化界面中具有重要的应用。
因为pprof是原始输出数据,使用 Graphviz 可以将数据图形化展示。
3 Graphviz下载 安装
- 下载地址:https://graphviz.org/download,下滑到Windows位置处可以下载windows版本的Graphviz。
2. 安装
记得将Graphviz
添加到系统的环境变量中。
可以修改安装目录。
- 验证安装结果
cmd,输入dot -version
后显示以下内容,表明安装成功。
dot - graphviz version 8.0.5 (20230430.1635)
libdir = "D:\Software\pprof\Graphviz\bin"
Activated plugin library: gvplugin_dot_layout.dll
Using layout: dot:dot_layout
Activated plugin library: gvplugin_core.dll
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
D:\Software\pprof\Graphviz\bin\config6
was successfully loaded.
render : cairo dot dot_json fig gdiplus json json0 map mp pic pov ps svg tk xdot xdot_json
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout : textlayout
device : bmp canon cmap cmapx cmapx_np dot dot_json emf emfplus eps fig gif gv imap imap_np ismap jpe jpeg jpg json json0 metafile mp pdf pic plain plain-ext png pov ps ps2 svg tif tiff tk xdot xdot1.2 xdot1.4 xdot_json
loadimage : (lib) bmp eps gif jpe jpeg jpg png ps svg
4 使用
需要用到go tool pprof
命令来辅助查看以及图形化的方式来展示。
- 添加配置并启动程序
- 加入依赖库
"net/http"
_ "net/http/pprof"
- 加入运行分析性能的代码
go func() {
log.Println(http.ListenAndServe("127.0.0.1:6060", nil))
}()
- 抓取程序运行分析结果
D:\Software\pprof>go tool pprof http://localhost:6060/debug/pprof/profile
Fetching profile over HTTP from http://localhost:6060/debug/pprof/profile
Saved profile in C:\Users\chenlc\pprof\pprof.___10go_build_dsms_admin_app_task_job.exe.samples.cpu.001.pb.gz
File: ___10go_build_dsms_admin_app_task_job.exe
Build ID: C:\Users\chenlc\AppData\Local\JetBrains\GoLand2023.1\tmp\GoLand\___10go_build_dsms_admin_app_task_job.exe2023-06-09 11:41:18.3871269 +0800 CST
Type: cpu
Time: Jun 9, 2023 at 11:41am (CST)
Duration: 30.11s, Total samples = 14.96s (49.69%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof)
- 图形化显示性能分析结果
退出命令行,复制Saved profile
后面的文件名。这样就是在浏览器中打开了,默认是以 greph 的方法展示,首页和上面的图形一样。在VIEW
中可以切换到Flame Graph
。
go tool pprof -http localhost:3001 C:\Users\chenlc\pprof\pprof.___10go_build_dsms_admin_app_task_job.exe.samples.cpu.001.pb.gz
注意:颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
跨度越大,占比资源(CPU/内存)越大。