热门推荐
Golang性能分析工具PProf的使用
2024-10-31 20:02

pprof 是一个强大的性能分析工具,可以捕捉到多维度的运行状态的数据,能够非常方便的监控代码运行性能。

Golang性能分析工具PProf的使用

性能分析基础数据的获取有三种方式

  • runtime/pprof 包
  • net/http/pprof 包
  • go test 时添加收集参数

性能调优的两个方向:CPU和内存

  • go tool pprof cpu.pprof

  • go tool pprof mem.pprof

runtime/pprof 包的使用[不推荐使用]
针对于应用程序,通过命令行的启动参数来生成prof文件,再使用go tool pprof工具进行分析,如

运行 https://blog.csdn.net/qq_45066628/article/details/app.exe -cpuprofile=cpu.prof
分析 go tool pprof cpu.prof
注意,实际测试时得到的cpu.prof文件总是为空,原因未知

net/http/pprof 包的使用[推荐]
net/http/pprof 对 runtime/pprof 进行了封装,并在http端口上暴露出来,入口为 IP:PORT/debug/pprof/
a>若应用为web服务器,只需引入包即可 _ “net/http/pprof”,会自动注册路由到/debug/pprof/
b>若为服务时程,可开启一个goroutine开启端口并监听,如
go func(){log.Println(http.ListenAndServe(":8080",nil))}()

访问 http://127.0.0.1:8080/debug/pprof/ 即可实时查看性能数据,业面如下

在这里插入图片描述
其中 go tool trace 工具会打开 http://127.0.0.1:1089/ 通过网页方式显示结果

在这里插入图片描述
go test 时添加收集参数
需要创建测试文件
go test支持的参数非常多,如
-cpuprofile=cpu.prof
-memprofile=mem.prof

对生成的profile文件,可使用go tool pprof profilename来分析,如

在这里插入图片描述
常用的命令还有

在 go tool pprof 下输入 web 命令,注意默认端口为8080

注意,需要提前安装 Graphviz 用于画图
下载地址:https://graphviz.gitlab.io/download/
windows:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.zip
解压下,添加环境变量 Path下添加 C:Gographvizbin (这里我解压在 C:Gographviz 目录)
测试:命令提示符下 dot -V # 打印版本信息
若是Linux,yum install graphviz # 默认安装版本为为2.30 依赖项较多

访问地址:http://localhost:8000/ui/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在正常程序中,添加 go NewMonitor(1) 每隔指定时间在控制台输出性能数据

此外,内置包 expvar 可以在/debug/vars 中输出cmdline、memstats的json数据,若要向其中添加输出内容,如输出 num_goroutine 用于显示协程数量,核心语句如下

详细参考:https://github.com/qcrao/Go-Questions/blob/master/GC/GC.md

方式1:GODEBUG=gctrace=1
go build -o main
GODEBUG=gctrace=1 https://blog.csdn.net/qq_45066628/article/details/main

方式2:go tool trace
在代码中添加
f, _ := os.Create(“trace.out”)
defer f.Close()
trace.Start(f)
defer trace.Stop()
然后运行程序,等程序运行完成,执行以下命令
go tool trace trace.out
需要等到程序执行完成 需要使用chrome浏览器(实测firefox有问题)

    以上就是本篇文章【Golang性能分析工具PProf的使用】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/911.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多