pprof & 火焰图go-torch

引言

最近学习go的性能分析工具,pprofgo-torch,这篇文章是本人对两个公爵安装,使用的总结。

pprof

参考

https://studygolang.com/articles/12970

step1

mac上安装graphviz,可以通过brew安装,用于生成.svg格式图形数据

brew install graphviz

step2

开启一个pprof的服务

step3

利用go tool pprof工具采集运行数据,此时可以加大web压力,增加采点数据,让采集结果更有效

go tool pprof http://127.0.0.1:8080/debug/pprof/profile

(好像可以--second 60/-t 60设置采样时间,默认30s)

step4

此时会生成一个.pb.gz的文件,也就是分析结果,同时进入pprof命令,
可以用top,tree,web命令查看分析结果,其中web命令需要安装step1 安装graphviz工具,这个工具会把数据生成svg图表格式。

火焰图

go tool pprofweb命令可以直观地得到服务调用地trace流程图,但是当调用链条比较复杂时候,看起来就比较麻烦了。

需要用go-torch火焰图帮助梳理

步骤

step1

安装配置FlameGraph

git clone https://github.com/brendangregg/FlameGraph.git

然后到FlameGraph安装目录下配到环境变量

PATH=$PATH:/Users/huangzhilang/mygo/src/github.com/brendangregg/FlameGraph

step2

安装go-torch

go get -v github.com/uber/go-torch

step 3

在服务中定义监控数据项的路由

import (
    "net/http"
    "net/http/pprof"
)
...
http.HandleFunc("/debug/pprof/block", pprof.Index)
http.HandleFunc("/debug/pprof/goroutine", pprof.Index)
http.HandleFunc("/debug/pprof/heap", pprof.Index)
http.HandleFunc("/debug/pprof/threadcreate", pprof.Index)

step4

启用go-torch采集数据并生成svg的火焰图

如:cpu火焰图

go-torch -u http://:/debug/pprof/ -p > cpu-local.svg

内存火焰图

go-torch -u http://:/debug/pprof/heap -p > heap-local.svg

你可能感兴趣的:(go)