golang学习笔记-pprof性能分析2

前言

golang自带非常强大的性能分析工具,它可以在Go程序的运行中以精致的细节显示所有运行时事件,今天我们就了解一下go tool trace的强大之处。

一、概述

go tool trace 显示了非常之多的信息,为了简单起见,我们先概括的看一下他显示了些什么,下面是我生成的所有trace目录,具体的如图上所示,我们逐个分析。
在这里插入图片描述

二、详细

1、view trace
打开一个view trace,过程可能需要一点时间,稍作等待,打开之后看到的画面如下,包含一些注解:
在这里插入图片描述
Heap:查看堆的使用情况,可以查看任何时刻的堆情况。下一次GC的时间,当前使用的内存情况。如下:
在这里插入图片描述
Threads:当前的线程使用情况,如下图:
在这里插入图片描述
在这里插入图片描述
Proc x:当前“核”的groutines执行情况(具体内容还没看懂什么鬼
在这里插入图片描述

最右侧的统计信息:
在这里插入图片描述
2、Goroutine analysis
打开Goroutine analysis看到的所有的goroutines和对应所在的模块,N表示当前模块(函数)启动的goroutines的数目,如下图:
在这里插入图片描述
随机点开一个,CmpServer/MyKafka.(*MyProducer).run 查看具体的信息:
在这里插入图片描述
3、Network blocking profile
4、Synchronization blocking profile
5、Syscall blocking profile
6、Scheduler latency profile
7、User-defined tasks
8、User-defined regions
3~8不逐个展开(还不明白流程图具体代表的什么意思)

三、go-torch性能分析

曾今对go自带的性能分析工具pprof简单做了一些记录,文章详见 pprof性能分析1pprof性能分析2 ,pprof产生的性能报告确实能够比较直观的看出来存在性能瓶颈的地方,但是对于比较大的服务来说,错综复杂的粗细线条明显能够混乱分析者的视线,这时候go-torch变体现出了他的优势。
上述一、章节中引入的pprof包是对golang自带的性能工具pprof的简单封装,通过监听本地的6060端口,生产pprof的性能文件同时也响应go-torch的指令。

1. 安装火焰图的生成工具

1)安装go-torch工具
go get github.com/uber/go-torch
2)安装brandangregg的火焰图生产工具
git clone git@github.com:brendangregg/FlameGraph.git,安装完成生成工具之后,将flamegraph.h所在的目录加入到环境变量中

2. 编译并运行服务

用postman或者web页面向服务发送http://localhost:6060/start开始采集pprof性能数据,发送http://localhost:6060/stop停止采集pprof性能数据。在另一个shell终端上输入go-torch -u http://localhost:6060 --seconds 60 -f cpu.svg表示开始采集cpu的性能火焰图且持续60s的时间,到达采集结束时间后生成cpu.svg的火焰图,改文件用现代浏览器打开即可查看,如下:
在这里插入图片描述
说明:

  • 栈帧(Stack frame,调用链)垂直堆叠,显示栈的深度
  • 帧的宽度代表一个方法的运行的时间占比
  • 如果一个方法被调用者调用,它会显示多次,分列在不同的调用者的堆栈上。(译者注:这点和pprof工具不同,pprof至显示一个方法的框,上面的时间标签是所有的调用者调用的时间)
  • 颜色是任意的(arbitrary), 横坐标根据字母顺序排列

参考:

https://blog.csdn.net/csdnnews/article/details/81009432
https://making.pusher.com/go-tool-trace/
[Go 大杀器之跟踪剖析 trace]https://eddycjy.gitbook.io/golang/di-9-ke-gong-ju/go-tool-trace
[an-introduction-to-go-tool]https://about.sourcegraph.com/go/an-introduction-to-go-tool-trace-rhys-hiltner/
[Garbage Collection In Go]https://www.ardanlabs.com/blog/2019/05/garbage-collection-in-go-part2-gctraces.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值