go help
GODEBUG環境變數
GODEBUG=gctrace=1 go run cmd/agent_bin.go
- 設定 `schedtrace=X` 引數可以使執行時在每 X 毫秒發出一行排程器的摘要資訊到標準 err 輸出中
- `scheddetail=1` 可以使執行時在每 X 毫秒發出一次詳細的多行資訊,資訊內容主要包括排程程式、處理器、OS 執行緒 和 Goroutine 的狀態。
go tool
pprof
display
- 命令列方式
go tool pprof xx.out
- web方式
go tool pprof -http=:8080 heap.out
- 命令列方式
生成檔案
程式碼生成
// cpu pprof.StartCPUProfile(w) defer pprof.StopCPUProfile() // mem pprof.WriteHeapProfile(w)
curl從http獲取 localhost:6061/debug/pprof/profile?...
效能測試 go test -bench=. -cpuprofile=./cpu.prifile
分析
- go tool pprof x.prof
- top
- list func
- web
- go-torch x.prof | go-torch -u http=localhost:6061 -t30
- go tool pprof x.prof
trace
- 獲取trace檔案
- 寫程式碼
trace.Start(w) defer trace.Stop()
- http請求 /debug/pprof/trace
- 寫程式碼
- 分析
- go tool trace /tmp/trace.output
objdump反彙編
- go tool objdump -S -s “main.example” ./example1
test
效能測試
- GOGC=off go test -cpu 1 -run none -bench . -benchtime 3s
- GOGC=off go test -cpu 8 -run none -bench . -benchtime 3s
壓力測試
- go-wrk
本作品採用《CC 協議》,轉載必須註明作者和本文連結