我有使用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