1.1 下載go-wrk
這個是用來進行http介面壓測的
官網地址:https://github.com/tsliwowicz/go-wrk
七牛雲下載
使用
go-wrk -d 500 http://localhost:8080/hello
1.2 安裝生成火焰圖工具
1.2.1 下載go-torch
go get github.com/uber/go-torch
1.2.2 安裝perl
官網下載地址:https://www.activestate.com/products/perl/...
七牛雲下載注意
:安裝時記得把新增到環境變數PATH選項勾上
1.2.3 下載FlameGraph
git clone https://github.com/brendangregg/FlameGraph.git
注意
:將此資料夾加入到PATH
環境變數中
1.3 下載graphviz
生成SVG 圖,能夠更好地看到函式呼叫 CPU 佔用情況
1.3.1 Windows安裝
官網下載地址:https://graphviz.gitlab.io/_pages/Download...
七牛雲下載
安裝好之後,新增其 bin檔案到PATH
環境變數中
1.3.2 Linux安裝
# Ubuntu
sudo apt-get install graphviz
# Centos
yum install graphviz
1.3.3 測試
檢查是否安裝成功
dot -version
2.1 開啟效能分析
開啟效能分析只需要匯入下面這個包即可
import _ "net/http/pprof"
2.2 開始壓測
程式碼見文章末尾附錄
- 啟動
main.go
- 開始壓測
go-wrk -d 500 http://localhost:8080/hello
2.3 web檢視
瀏覽器開啟:http://localhost:8080/debug/pprof/
allocs
: 記憶體分配情況block
: 導致阻塞同步的堆疊跟蹤cmdline
: 當前程式啟用的命令列goroutine
: 當前執行的goroutineheap
: 存活物件的記憶體分配情況mutex
: 互斥鎖的競爭持有者的堆疊跟蹤profile
: 預設進行 30s 的 CPU Profilingthreadcreate
: 作業系統執行緒跟蹤trace
: 當前程式執行情況full goroutine stack dump
: 所有goroutine棧輸出2.4 取樣分析
下面命令會開啟一個互動頁面
go tool pprof --seconds 5 http://localhost:8080/debug/pprof/profile
常用命令
top
預設顯示 10 個佔用 CPU 時間最多的函式tree
樹形結構檢視goroutine情況。web
生成SVG函式呼叫圖(需安裝graphviz
)exit
退出分析
開啟pprof
視覺化頁面,與上面 可互動頁面中web
命令效果一樣
go tool pprof -http=:8080 http://localhost:8080/debug/pprof/profile?seconds=60
2.5 生成火焰圖
進行 5 秒鐘的 CPU 效能取樣並生成火焰圖
go-torch --seconds 5 http://localhost:8080/debug/pprof/profile
命令執行完會在該目錄下生成一個
torch.svg
檔案,可用瀏覽器開啟檢視火焰圖
- 生成
pprof.cpu
檔案go test -bench . -benchmem -cpuprofile pprof.cpu
- 分析
pprof.cpu
檔案go tool pprof pprof.cpu