一迅皇、pprof
package main
import (
"math/rand"
"testing"
)
func BenchmarkRandom(b *testing.B) {
for i := 0; i < b.N; i++ {
random()
}
}
func random() int {
return rand.Intn(100)
}
go test -c go_test.go
$ ./main.test -test.bench=. -test.cpuprofile=cpu-profile.prof
$ go tool pprof main.test cpu-profile.prof
(pprof) top 5
利用這個(gè)命令查看堆棧信息:
go tool pprof http://localhost:6060/debug/pprof/heap
利用這個(gè)命令可以查看程序CPU使用情況信息:
go tool pprof http://localhost:6060/debug/pprof/profile
使用這個(gè)命令可以查看block信息:
go tool pprof http://localhost:6060/debug/pprof/block
例如:
1)go tool pprof http://localhost:6060/debug/pprof/profile
2)top10
3)web 需要瀏覽器支持
各字段含義:
- 采樣點(diǎn)落在該函數(shù)中的次數(shù)
- 采樣點(diǎn)落在該函數(shù)中的百分比
- 上一項(xiàng)的累積百分比
- 采樣點(diǎn)落在該函數(shù)搅荞,以及被它調(diào)用的函數(shù)中的總次數(shù)
- 采樣點(diǎn)落在該函數(shù)框咙,以及被它調(diào)用的函數(shù)中的總次數(shù)百分比
- 函數(shù)名
設(shè)置采樣率
go tool pprof --seconds 25 http://localhost:9090/debug/pprof/profile
生成svg文件
先安裝sudo apt-get install graphviz(繪圖工具)
go tool pprof -alloc_space -cum -svg http://127.0.0.1:8080/debug/pprof/heap > heap.svg
svg文件可以直接通過(guò)瀏覽器打開(kāi)
二喇嘱、go + FlameGraph
go-torch是Uber公司開(kāi)源的一款針對(duì)Golang程序的火焰圖生成工具,能收集 stack traces,并把它們整理成火焰圖腔丧,直觀地程序給開(kāi)發(fā)人員。go-torch是基于使用BrendanGregg創(chuàng)建的火焰圖工具生成直觀的圖像砾医,很方便地分析Go的各個(gè)方法所占用的CPU的時(shí)間衣厘。
1) 下載安裝go-torch
go get github.com/uber/go-torch 編譯生成二進(jìn)制头滔,放入bin下
2)下載火焰圖工具
git clone https://github.com/brendangregg/FlameGraph.git
3)目錄拷貝
cp flamegraph.pl /usr/local/bin
4) 采樣抓取pprof數(shù)據(jù)
go-torch -u http://localhost:6060 -t 10
Writing svg to torch.svg