Go 壓測


1. 單測 + 壓測

壓測
go test -bench=. -benchmem 
單元測試
go test -v . 

2. pprof + 火焰圖(查看cpu占用,內存占用)

嵌入代碼
import ( rawhttp "net/http" _ "net/http/pprof" ) func init(){ if conf.GetConfig().GetEnv() != "prod" { go func() { rawhttp.ListenAndServe(":6060", nil) }() } } 

ps : pprof會啟動6060端口收集各項數據

火焰圖工具
## 安裝flamegraph git clone https://github.com/brendangregg/FlameGraph.git cd FlameGraph cp flamegraph.pl /usr/local/bin ## 安裝go-torch go get github.com/uber/go-torch ## 使用,默認停留30秒收據 ## 此期間內可使用hey工具對http服務進行壓測 go-torch -u http://127.0.0.1:6060 ## 生成torch.tvg圖片后拉到瀏覽器里即可

在輸入命令:
go-torch -u http://127.0.0.1:6060,想生成火焰圖,但是老是拋出錯誤:ERROR: No stack counts found,could not generate flame graph: exit status 2。弄了很久,以為是 perf 沒裝,但是裝了也不行,然后發現必須在訪問程序時,火焰圖才能生成。
因此通過命令去仿造批量請求:
wrk -c 20 -t 5 -d 3m http://127.0.0.1:8080/data
最后就可以生成了
壓測工具
https://github.com/rakyll/hey
wrk,性能測試工具,https://github.com/wg/wrk.git
go1.10+自帶web ui

http://ju.outofmemory.cn/entry/344575

benchmark導出profile.out,命令: go test -bench=. -benchmem -cpuprofle=profile.out

或訪問http://127.0.0.1:6060/debug/pprof/profile 間隔期內,對服務進行壓測,最后可導出profile文件

go tool pprof -http=:8080 profile.out


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM