golang性能分析发现工具pprof

什么是pprof

pprof是Go官方提供的性能分析工具,可以分析程序的运行情况,并且提供可视化的功能。

pprof可以分析什么

  1. allocs:程序启动之后内存分配的情况
  2. block:导致阻塞操作的一些堆栈跟踪信息
  3. cmdline:当前程序启动的命令行
  4. goroutine:所有当前 goroutine 的堆栈跟踪信息
  5. heap:程序在当前堆上内存分配的情况
  6. mutex:锁资源的竞争的堆栈信息
  7. profile:CPU profile文件。可以在 debug/pprof?seconds=x秒 GET 参数中指定持续时间。获取pprof文件后,使用 go tool pprof x.prof命令分析pprof文件。
  8. threadcreate:系统线程的使用情况
  9. trace:当前系统的代码执行的链路情况

如何使用

代码中引用包

从main函数中引用包   _ "net/http/pprof"

_ "net/http/pprof"

创建新的协程来启动pprof服务

func RegisterProf() {
	go func() {
		if err := http.ListenAndServe(":6060", nil); err != nil {
			panic("pprof server start error: " + err.Error())
		}
	}()
}

启动服务访问协程定义的6060端口 debug/pprof

localhost:6060/debug/pprof

使用go tool pprof 命令查看分析

打开命令行工具  输入go 自带的go tool命令

go tool pprof + 复制分析模块链接

go tool pprof http://127.0.0.1:6060/debug/pprof/allocs

进入交互

通过top +num 来查看占用最多的几条

通过 list 加关键信息查看具体情况

安装graphviz查看线图

下载graphviz

下载网址:https://graphviz.gitlab.io/download/

下载完记得添加到全局环境变量,不然无法找到dot命令        

在pprof中通过web来唤醒

按照函数栈的方式向下

分析高内存占用,互斥锁,多协程,高CPU产生原因

通过上述使用 可以通过 go tool pprof +localhost:6060/debug/pprof/ + allocs || block || heap || goroutine 等  针对不对模块进行分析

通过top 找到占用高的地方+通过list +关键词来确定代码具体方位  进行原因分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值