天天看点

pprof & 火焰图go-torch引言pprof火焰图

引言

最近学习go的性能分析工具,

pprof

go-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 pprof

web

命令可以直观地得到服务调用地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://<ip>:<port>/debug/pprof/ -p > cpu-local.svg
           

内存火焰图

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