火焰图 火焰图(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