1 参考文档

参考1:golang性能分析,pprof的使用,graphviz,火焰图
参考2:Golang中的pprof分析环境搭建【Windows环境】
参考3:pprof性能分析-火焰图

2 pprof、Graphviz介绍

pprof:是golang 自带性能剖析工具,可以帮助定位程序中可能存在的问题,是go服务程序异常时辅助排查问题的有效工具。
Graphviz:是开源的图形可视化软件。图形可视化是一种将结构信息表示为抽象图形和网络图的方法。它在网络,生物信息学,软件工程,数据库和网页设计,机器学习以及其他技术领域的可视化界面中具有重要的应用。

因为pprof是原始输出数据,使用 Graphviz 可以将数据图形化展示。

3 Graphviz下载 安装


2. 安装

Graphviz


可以修改安装目录。

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
  1. 添加配置并启动程序
  • 加入依赖库
	"net/http"
	_ "net/http/pprof"
  • 加入运行分析性能的代码
	go func() {
		log.Println(http.ListenAndServe("127.0.0.1:6060", nil))
	}()
  1. 抓取程序运行分析结果
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 profileVIEWFlame 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/内存)越大。