golang的pprof快速使用

开启:_ "net/http/pprof"

代码监听:http.ListenAndServe(ip, nil) //ip比如127.0.0.1:6069

web访问:http://127.0.0.1:6069/debug/pprof/

(其中,点击goroutine时,地址上debug=1,如果改为debug=2,则可以看到阻塞了多久和阻塞原因)

查看profile:go tool pprof http://0.0.0.0:6069/debug/pprof/goroutine 或 go tool pprof http://0.0.0.0:6069/debug/pprof/heap或go tool pprof http://127.0.0.1:6069/debug/pprof/profile

其中,最后的goroutine可以是其它(在web上看到的都可以),常用的就是goroutine(查看goroutine泄漏)和heap(查看内存泄漏)和profile(查看cpu占用);

profile指令(敲入help查看指令):如果生成的是goroutine,则使用top列出正在运行的每个函数的goroutine的数量,如果生成的是heap,则看到的是占用内存,list查看某个函数的代码,以及该函数每行代码的指标信息,traces则可以打印函数的调用栈的信息,web指令需要安装graphviz

注意:heap能帮助我们发现内存问题,但不一定能发现内存泄露问题

graphviz安装:

下载:Download | Graphviz

安装时选择添加环境变量到用户

打开cmd

输入:

查看goroutine泄漏:go tool pprof -http 127.0.0.1:8081 http://0.0.0.0:6069/debug/pprof/goroutine

查看内存泄漏:go tool pprof -http 127.0.0.1:8081 http://0.0.0.0:6069/debug/pprof/heap

查看cpu占用:go tool pprof -http 127.0.0.1:8081 http://0.0.0.0:6069/debug/pprof/profile?seconds=30

其中:127.0.0.1:8081是加载完自动打开的地址,http://0.0.0.0:6069/debug/pprof/profile是分析的文件,?seconds=1是分析的时间区间,这里是30秒,默认不填是60秒

以profile为例,top中显示:

Flat:采样时,该函数正在运行的次数*采样频率(10ms),即得到估算的函数运行”采样时间”。这里不包括函数等待子函数返回;

Flat%:同上的 CPU 运行耗时总比例;

Sum%:给定函数累积使用 CPU 总比例,如第二行 sum% = 89.72% = 88.90% + 0.83%

Cum:当前函数加上它之上的调用运行总耗时,包括函数等待子函数返回。因此 flat

Cum%:同上的 CPU 运行耗时总比例

Name:函数名称

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值