3 ms·
I've got very different results with Go 1.16 and the latest stable version of gRPC, I ran things manually under WSL but it gives you another perspective: 90k r
by Thaxll 6y ago
I've got very different results with Go 1.16 and the latest stable version of gRPC, I ran things manually under WSL but it gives you another perspective:
90k req/sec with p99 under 1ms
ghz --proto=/proto/helloworld/helloworld.proto --call=helloworld.Greeter.SayHello --insecure --concurrency="50" --connections="5" --duration "60s" --data-file 1kb.json 127.0.0.1:50051 --cpus=4
Summary:
Count: 5411979
Total: 60.00 s
Slowest: 15.24 ms
Fastest: 0.03 ms
Average: 0.34 ms
Requests/sec: 90194.36
Response time histogram:
0.026 [1] |
1.548 [997969] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
3.070 [1426] |
4.592 [251] |
6.114 [108] |
7.636 [87] |
9.157 [80] |
10.679 [17] |
12.201 [40] |
13.723 [11] |
15.245 [10] |
Latency distribution:
10 % in 0.12 ms
25 % in 0.19 ms
50 % in 0.29 ms
75 % in 0.42 ms
90 % in 0.58 ms
95 % in 0.72 ms
99 % in 1.04 ms
Status code distribution:
[OK] 5411959 responses
[Canceled] 3 responses
[Unavailable] 17 responses
Error distribution:
[3] rpc error: code = Canceled desc = grpc: the
client connection is closing
[17] rpc error: code = Unavailable desc = transport
is closing
- kaba0 6y agoThat in itself is not too useful, for reference you should run a few other implementations on your machine, as the numbers will likely be better for all of them on a beefier machine.
- Thaxll 5y agoIt shows that you can have p99<1ms with over 100k req/sec. The benchmark is bad and does not reflect Go performance at all. Also the tool used in that benchmark ghz is also written in Go, so somehow the client is able to have high troughput and verify requests but the server can't?