安裝
- 安裝go-torch
go get github.com/uber/go-torch
- 安裝FlameGraph
cd $WORK_PATH && git clone https://github.com/brendangregg/FlameGraph.git
export PATH=$PATH:$WORK_PATH/FlameGraph
- 安裝graphviz
yum install graphviz
- 使用pprof
package main
import (
"net/http"
_ "net/http/pprof"
)
func main() {
// 服務端啟動一個協程,支持pprof的handler
//導入pprof的包,自動包含一些handler
//項目加入如下代碼
go func() {
http.ListenAndServe("0.0.0.0:8888", nil)
}()
//other code
}
ab壓測
-
安裝apache
-
使用ab命令
-
基本使用
ab -n 19999 -c 20 http://xxxxxxxxxxxx
-n 總數
-c 同時並發請求數
pprof使用
- 監聽
go tool pprof http://localhost:port/debug/pprof/profile
-
操作
進入30秒的profile收集時間,在這段時間內請求服務,盡量讓cpu占用性能產生數據 -
pprof命令
top
在默認情況下,top命令會輸出以本地取樣計數為順序的列表。我們可以把這個列表叫做本地取樣計數排名列表。
web
與gv命令類似,web命令也會用圖形化的方式來顯示概要文件。但不同的是,web命令是在一個Web瀏覽器中顯示它。
火焰圖工具使用
- 監聽
//cpu火焰圖
go-torch -u http://ip:port/debug/pprof/ -p > profile-cpu.svg
//內存火焰圖
go-torch -u http://ip:port/debug/pprof/heap -p > profile-heap.svg
- 操作
針對測試服務端,進行操作,上述步驟默認監聽30s,即30s后可以生成相關圖像
