wesky93 / testAsyncGrpc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Python Grpc server bencmark

performance test tool

scenarios

  1. computing
    • Greeter service - no i/o only computing logic
  2. network i/o
    • s3 service - get s3 objects list(it will get 50 objects per request)
    • mongo service - data write from mongodb

Condition

  • total request : 200

  • rps

    • 10
    • 25
    • 50
    • 100
    • 200
  • server

    • grpcio(sync, max worker 1)
    • grpcio(sync, max worker 50)
    • grpcio(async)
    • grpcio(async) + uvloop

generate proto file

python -m grpc_tools.protoc -I. --python_out=. --python_grpc_out=. --grpc_python_out=. <proto_file>.proto

test CMD

on linux

./bin/ghz_linux/

on mac

./bin/ghz_mac  -t 0 -r 10 -n 200 --insecure --proto ./src/aws_api_stream/AwsAPI.proto --call AwsAPI.S3.GetObjects -d '{"bucket":"commoncrawl","region":"us-east-1"}' 0.0.0.0:50051 -o ./test_results/aws_api_stream/result.json -O json

How to test?

  1. download ghz
  2. start server
    • python sync_server.py -w 1
    • python sync_server.py -w 10
    • python async_server.py
    • python async_server.py -l uvloop
  3. run ghz

summary

hello server

concurrency - 2 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 71.90 ms 118.74 ms 182.37 ms 178.11 ms
Slowest 7.51 ms 7.97 ms 4.61 ms 4.55 ms
Fastest 0.41 ms 0.55 ms 1.13 ms 0.88 ms
Average 0.62 ms 1.09 ms 1.73 ms 1.69 ms
Requests/sec 2781.69 1684.29 1096.66 1122.91

concurrency - 10 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 75.77 ms 94.25 ms 175.66 ms 160.04 ms
Slowest 5.30 ms 8.97 ms 14.21 ms 9.88 ms
Fastest 2.27 ms 0.97 ms 6.79 ms 3.80 ms
Average 3.50 ms 4.49 ms 8.55 ms 7.79 ms
Requests/sec 2639.73 2122.06 1138.54 1249.68

concurrency - 25 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 89.54 ms 96.46 ms 162.01 ms 145.08 ms
Slowest 16.17 ms 20.22 ms 30.13 ms 23.37 ms
Fastest 3.64 ms 2.24 ms 9.69 ms 10.88 ms
Average 10.58 ms 10.60 ms 19.24 ms 17.40 ms
Requests/sec 2233.59 2073.41 1234.46 1378.53

concurrency - 50 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 91.47 ms 82.80 ms 178.29 ms 140.22 ms
Slowest 29.61 ms 32.31 ms 53.31 ms 37.37 ms
Fastest 2.75 ms 1.61 ms 16.19 ms 11.96 ms
Average 20.92 ms 18.94 ms 38.58 ms 32.78 ms
Requests/sec 2186.54 2415.41 1121.76 1426.31

aws api unary

concurrency - 2 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 117.34 s 82.58 s 84.09 s 84.39 s
Slowest 2.76 s 1.75 s 2.77 s 1.92 s
Fastest 687.63 ms 505.74 ms 518.04 ms 495.28 ms
Average 1.17 s 824.79 ms 839.97 ms 836.05 ms
Requests/sec 1.70 2.42 2.38 2.37

concurrency - 10 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 116.32 s 65.58 s 62.34 s 60.03 s
Slowest 7.27 s 4.89 s 5.04 s 5.12 s
Fastest 644.39 ms 886.42 ms 1.28 s 1.30 s
Average 5.69 s 3.22 s 3.08 s 2.99 s
Requests/sec 1.72 3.05 3.21 3.33

concurrency - 25 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 109.31 s 68.52 s 57.39 s 56.57 s
Slowest 15.41 s 12.40 s 12.30 s 13.05 s
Fastest 1.13 s 3.78 s 1.55 s 1.89 s
Average 12.88 s 8.20 s 6.91 s 6.96 s
Requests/sec 1.83 2.92 3.49 3.54

concurrency - 50 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 200
DeadlineExceeded 0 0 0 0
Total 109.84 s 66.75 s 59.68 s 58.43 s
Slowest 29.53 s 19.92 s 27.24 s 24.32 s
Fastest 513.20 ms 3.35 s 3.87 s 5.14 s
Average 23.92 s 15.02 s 13.84 s 14.24 s
Requests/sec 1.82 3.00 3.35 3.543.42

aws api stream

concurrency - 2 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 200 109
Unavailable 0 0 0 91
Total 121.00 s 90.31 s 85.28 s 48.39 s
Slowest 2.40 s 2.18 s 2.08 s 1.72 s
Fastest 654.55 ms 552.69 ms 500.94 ms 451.07 ms
Average 1.21 s 900.35 ms 851.79 ms 483.83 ms
Requests/sec 1.65 2.21 2.35 4.13

concurrency - 10 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 55 57
Unavailable 0 0 145 143
Total 122.18 s 72.01 s 52.96 s 51.04 s
Slowest 8.62 s 5.03 s 4.06 s 3.57 s
Fastest 659.90 ms 1.59 s 574.99 ms 1.52 s
Average 5.98 s 3.54 s 2.49 s 2.41 s
Requests/sec 1.64 2.78 3.78 3.92

concurrency - 25 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 34 39
Unavailable 0 0 166 161
Total 116.13 s 74.96 s 56.88 s 57.44 s
Slowest 16.84 s 14.34 s 9.16 s 9.61 s
Fastest 1.08 s 2.48 s 2.60 s 2.05 s
Average 13.69 s 8.90 s 6.63 s 6.79 s
Requests/sec 1.72 2.67 3.52 3.48

concurrency - 50 raw data

sync grpcio server(max 1 worker) sync grpcio server(max 10 worker) async grpclib server async grpclib server(with uvloop)
Count 200 200 200 200
OK 200 200 50 51
Unavailable 0 0 150 149
Total 116.42 s 72.87 s 51.91 s 48.47 s
Slowest 30.51 s 19.55 s 15.30 s 14.42 s
Fastest 566.16 ms 3.51 s 4.71 s 5.03 s
Average 25.48 s 16.44 s 11.94 s 11.31 s
Requests/sec 1.72 2.74 3.85 4.13

About


Languages

Language:Python 89.3%Language:Shell 10.7%