我有使用Go(httprouter/gokil),當我使用siege -b -t10s -c255
測試它,它顯示了這樣的事情(最好成績)編寫的Web應用程序服務器:如何分析Golang Web應用程序服務器
POST API (read only query to database, cache query result to RAM)
Transaction rate: 4251.38 trans/sec (local without proxy)
Transaction rate: 2082.11 trans/sec (local with proxy)
Transaction rate: 1806.63 trans/sec (test server)
GET Realistic (static file request, multiple URL)
Transaction rate: 4417.75 trans/sec (local without proxy)
Transaction rate: 1419.58 trans/sec (local with proxy)
Transaction rate: 234.73 trans/sec (test server)
Transaction Rate: 40.50 trans/sec (other external site that use gokil)
GET One static file (getting /js/jquery.js)
Transaction rate: 4166.83 trans/sec (local without proxy)
Transaction rate: 2531.79 trans/sec (local with proxy)
Transaction rate: 31.39 trans/sec (test server)
Transaction rate: 20.95 trans/sec (other external site that use gokil)
For comparison, hello world
Transaction rate: 13838.83 trans/sec (plain Go https://play.golang.org/p/y8rJ4ZkclD)
Transaction rate: 5420.79 trans/sec (local without proxy https://gitlab.com/kokizzu/gokil/tree/master/_example)
Transaction rate: 2701.12 trans/sec (local with proxy)
的規格爲local
是i7-4772HQ,三星850 SSD。
我使用的代理是caddy。我使用的數據庫是PostgreSQL和Redis來存儲會話。 test server
位於與千兆位連接相同的網絡上。
問題是,如何衡量每個請求的時間:導致瓶頸的哪個函數/哪行代碼?因爲我看看其他benchmark Go可以實現70k
到171k
rps。
我已經試過這blog,但它表明:
$ cd $GOPATH/src/gitlab.com/kokizzu/gokil/_example
$ go build
$ go tool pprof —text ./test
parsing profile: unrecognized profile format