PProf工具使用练习相关命令汇总| 青训营

90 阅读2分钟

PProf " 是 Go 语言中用于性能分析的一组工具和包。它能够帮助开发者收集和分析运行中 Go 程序的性能数据,从而深入了解应用程序的运行行为,识别性能瓶颈,并对代码进行优化。

包提供一个HTTP端点来对代码性能进行分析。可以用来监测进程的运行数据,用于监控程序的性能,对内存使用和CPU使用的情况统信息进行分析。 位于net/http/pprof下的包可以提供web服务器的性能分析 位于runtime/pprof下的包提供普通代码的性能分析

模式

  • 报告生成模式
  • Web界面模式
  • 终端交互模式

展示方式

  • Top
  • Graph
  • FlameGraph
  • Peek
  • Source
  • Disassemble

浏览器指标查看

在浏览器直接输入localhost:6060/debug/pprof 可以对各个指标进行查看,可以对问题处进行点击链接查看 image.png

终端对CPU进行分析

go tool pprof 命令行分析工具 在终端输入 go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10" 可以设定不同采研时间,等待采样结束后会显示相关信息并进入以下界面 输入不同的命令可以实现不同功能的查询

image.png 输入top可以显示按消耗CPU排列的统计结果

image.png 对于表格参数记录如下

  • flat 当前函数执行耗时
  • flast% 占用CPU时间
  • sum% 上面falt%总和
  • cum 当前函数本身加上其调用函数总耗时
  • cum% cum占CPU总时间
  • 当Flat ==Cum时 函数中没有调用其他函数内容
  • Flat=0 则函数内只有调用其他函数 输入 list 加函数名 list cat 可以查看函数存在占用的代码行号

image.png

WEB端分析

http://localhost:6060/debug/pprof/(或指定的端口)上提供:

  • /debug/pprof/heap:堆剖析,显示内存分配情况。
  • /debug/pprof/goroutine:Goroutine 剖析,显示所有当前 Goroutine 的堆栈跟踪。
  • /debug/pprof/cpu:CPU 剖析,显示程序的 CPU 使用情况。
  • /debug/pprof/block:阻塞剖析,显示 Goroutine 阻塞情况。
  • /debug/pprof/threadcreate:线程创建剖析,显示线程创建情况。

go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap" 每个端口的显示功能类似,可以实现

image.png一系列性能分析。 此外可以通过search 来查找响应的函数目标。