您现在的位置是:首页 >学无止境 >golang性能分析 pprof的使用 graphviz网站首页学无止境

golang性能分析 pprof的使用 graphviz

西木Qi 2024-09-20 12:01:06
简介golang性能分析 pprof的使用 graphviz

1 参考文档

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

2 pprof、Graphviz介绍

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

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

3 Graphviz下载 安装

  1. 下载地址:https://graphviz.org/download,下滑到Windows位置处可以下载windows版本的Graphviz。

在这里插入图片描述
2. 安装

记得将Graphviz添加到系统的环境变量中。

在这里插入图片描述
可以修改安装目录。

在这里插入图片描述

  1. 验证安装结果
    cmd,输入 dot -version后显示以下内容,表明安装成功。
dot - graphviz version 8.0.5 (20230430.1635)
libdir = "D:SoftwarepprofGraphvizin"
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:SoftwarepprofGraphvizbinconfig6
                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:Softwarepprof>go tool pprof http://localhost:6060/debug/pprof/profile

Fetching profile over HTTP from http://localhost:6060/debug/pprof/profile
Saved profile in C:Userschenlcpprofpprof.___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:UserschenlcAppDataLocalJetBrainsGoLand2023.1	mpGoLand\___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)
  1. 图形化显示性能分析结果
    退出命令行,复制Saved profile后面的文件名。这样就是在浏览器中打开了,默认是以 greph 的方法展示,首页和上面的图形一样。在VIEW中可以切换到Flame Graph
go tool pprof -http localhost:3001 C:Userschenlcpprofpprof.___10go_build_dsms_admin_app_task_job.exe.samples.cpu.001.pb.gz

在这里插入图片描述

在这里插入图片描述
注意:颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。

跨度越大,占比资源(CPU/内存)越大。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。