前言
之前一直研究過golang 的 pprof的性能分析,但是沒搞出火焰圖,後面查了一些資料學會了生成火焰圖。
今天我就用直接簡單暴力的方式的教程來說明怎麼用Golang的pprof監控和生成火焰圖。
簡單使用pprof
一.在代碼裏面寫監聽接口口。
#必須要 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())
}
}()
如下圖所示:
二.運行程序。
三.查看pprof性能
① 訪問 http://localhost:6060/debug/pprof/
②如果你不想使用網頁的交互模式,可以再終端使用以下命令,當然每次都是新數據:
#查看堆信息
go tool pprof --text http://localhost:6060/debug/pprof/heap
結果如下:
火焰圖
一、Go torch
go-torch是Uber公司開源的一款針對Go語言程序的火焰圖生成工具,能收集 stack traces,並把它們整理成火焰圖,直觀地程序給開發人員。
go-torch是基於使用BrendanGregg創建的火焰圖工具生成直觀的圖像,很方便地分析Go的各個方法所佔用的CPU的時間, 火焰圖是一個新的方法來可視化CPU的使用情況,本文中我會展示如何使用它輔助我們排查問題。
二、安裝
1.首先,我們要配置FlameGraph的腳本
FlameGraph 是profile數據的可視化層工具,已被廣泛用於Python和Node
2.檢出完成後,把flamegraph.pl拷到我們機器環境變量$PATH的路徑中去,例如:
cp flamegraph.pl /usr/local/bin
3.在終端輸入 flamegraph.pl -h 是否安裝FlameGraph成功
4.安裝go-torch
有了flamegraph的支持,我們接下來要使用go-torch展示profile的輸出,而安裝go-torch很簡單,我們使用下面的命令即可完成安裝
go get -v github.com/uber/go-torch
5.使用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文件,查看火焰圖,如下:
參考文章: