以前一直研究过golang 的 pprof的性能分析,可是没搞出火焰图,后面查了一些资料学会了生成火焰图。
今天我就用直接简单暴力的方式的教程来讲明怎么用Golang的pprof监控和生成火焰图。html
一.在代码里面写监听接口口。git
#必需要 import "net/http/pprof" go func() { if err := http.ListenAndServe("0.0.0.0:6060", nil); err != nil { fmt.Println("0.0.0.0:6060", err.Error()) } }()
以下图所示:github
二.运行程序。golang
三.查看pprof性能ide
① 访问 http://localhost:6060/debug/pprof/
svg
②若是你不想使用网页的交互模式,能够再终端使用如下命令,固然每次都是新数据:
工具
#查看堆信息
go tool pprof --text http://localhost:6060/debug/pprof/heap性能
结果以下:ui
1、Go torch
go-torch是Uber公司开源的一款针对Go语言程序的火焰图生成工具,能收集 stack traces,并把它们整理成火焰图,直观地程序给开发人员。debug
go-torch是基于使用BrendanGregg建立的火焰图工具生成直观的图像,很方便地分析Go的各个方法所占用的CPU的时间, 火焰图是一个新的方法来可视化CPU的使用状况,本文中我会展现如何使用它辅助咱们排查问题。
2、安装
FlameGraph 是profile数据的可视化层工具,已被普遍用于Python和Node
cp flamegraph.pl /usr/local/bin
有了flamegraph的支持,咱们接下来要使用go-torch展现profile的输出,而安装go-torch很简单,咱们使用下面的命令便可完成安装
go get -v github.com/uber/go-torch
①go-torch -h 查看帮助,以下:
② 程序跑起来,执行go-torch以下:
#采集60秒的数据,在当前目录下生成cpu.svg文件
go-torch -u http://127.0.0.1:6060 --seconds 60 -f cpu.svg
③打开svg文件,查看火焰图,以下:
参考文章: