Golang火焰图
文章目录火焰图1 原生 PProf 工具2 安装FlameGraph3 安装graphviz4 安装go-torch5 结果火焰图火焰图(Flame Graph)是 Bredan Gregg 创建的一种性能分析图表,因为它的样子近似火而得名。上面的 profiling 结果也转换成火焰图。Uber开源工具 go-torch可以直接读取 golang profiling 数据,并生成一个火焰图的..
火焰图
火焰图(Flame Graph)是 Bredan Gregg 创建的一种性能分析图表,因为它的样子近似火而得名。上面的 profiling 结果也转换成火焰图。Uber开源工具 go-torch可以直接读取 golang profiling 数据,并生成一个火焰图的 svg 文件。
使用火焰图之前,需要安装如下工具:
1 原生 PProf 工具
go get github.com/google/pprof
需要将产生的pprof可执行程序所在路径添加到环境变量中。
用法
pprof -http=:8080 cpu.prof
2 安装FlameGraph
git clone https://github.com/brendangregg/FlameGraph.git
将FlameGraph所在路径添加到环境变量中。
export PATH=$PATH:$GOPATH/FlameGraph
3 安装graphviz
graphviz 用于绘图
CentOS:
yum install graphviz
Ubuntu
sudo apt-get install graphviz
4 安装go-torch
安装go-torch用于采集数据,生产火焰图。
go get github.com/uber/go-torch
需要将产生的pprof可执行程序所在路径添加到环境变量中。
go-torch 工具的使用非常简单,没有任何参数的话,它会尝试从 http://localhost:8080/debug/pprof/profile 获取 profiling 数据。它有三个常用的参数可以调整:
-u --url:要访问的 URL,这里只是主机和端口部分
-s --suffix:pprof profile 的路径,默认为 /debug/pprof/profile
-t --seconds:要执行 profiling 的时间长度,默认为 30s
火焰图 svg 文件可以通过浏览器打开,它对于调用图的最优点是它是动态的:可以通过点击每个方块来 zoom in 分析它上面的内容。
火焰图的调用顺序从下到上,每个方块代表一个函数,它上面一层表示这个函数会调用哪些函数,方块的大小代表了占用 CPU 使用的长短,火焰图的配色并没有特殊的意义。
5 结果
运行程序(监听于9090端口),输入如下指令
go-torch -u http://localhost:9090 -t 30
随后在执行go-torch的目录下会生成torch.svg文件,通过浏览器打开,如下:
点击图中的任意部分,可以看到更详细信息:
备注:
在Windows下安装同样方式操作时,会有如下错误:
could not generate flame graph: fork/exec F:\Pr
ogramTest\Golang\src\github.com\FlameGraph\flamegraph.pl: %1 is not a valid Win32 application.
问题原因是windows不能直接执行pl文件。pl文件是perl文件,于是安装perl,并且将路径添加到环境变量中。依然报错。因为windows直接可执行的是exe文件。可能需要将下载的flamegraph进行编译,然后进行安装。或者直接下载flamegraph可执行程序,并进行安装。这部分后面完善。
扫描二维码,关注“清远的梦呓”公众号,手机端查看文章
更多推荐
所有评论(0)