gRPC와 REST의 벤치마크를 위한 테스트를 진행합니다.
테스트방식은 클라이언트에서 10, 30, 50, 100MB의 파일을 서버로 업로드하고,
서버에서는 해당 파일을 Base64로 Encoding하여 Reponse합니다.
테스트는 단일 쓰레드로 요청과 10개의 쓰레드로 동시 요청을 테스트 합니다.
gRPC 서버의 경우 worker의 갯수를 1개, 10개로 테스트 합니다.
또한 gRPC의 경우 stream을 이용한 방식도 테스트를 합니다.
./run_test.sh
을 실행하면 됩니다.
쉘 스크립트에서는 test_sample 폴더에 샘플 파일이 없을경우 파일을 생성하고
각각 서버와 클라이언트 코드를 실행한 후 시간을 테스트하여 결과 파일을 생성합니다.
8090, 50051 포트를 사용합니다.
만약 해당 포트를 사용하고 있다면 강제로
종료합니다.
방식 | 10MB | 30MB | 50MB | 100MB |
---|---|---|---|---|
REST 단일 요청 | 0.21 | 0.62 | 1.01 | 2.07 |
REST 10개 동시 요청 | 1.64 | 5.66 | 9.34 | 19.01 |
gRPC(worker 1) 단일 요청 | 0.08 | 0.29 | 0.45 | 0.87 |
gRPC(worker 1) 10개 동시 요청 | 0.35 | 1.75 | 3.02 | 6.38 |
gRPC(worker 10) 단일 요청 | 0.07 | 0.26 | 0.39 | 0.90 |
gRPC(worker 10) 10개 동시 요청 | 0.44 | 1.94 | 3.43 | 6.97 |
gRPC_chunk(worker 1) 단일 요청 | 0.04 | 0.10 | 0.16 | 0.24 |
gRPC_chunk(worker 1) 10개 동시 요청 | 0.32 | 0.89 | 1.36 | 5.04 |
gRPC_chunk(worker 10) 단일 요청 | 0.04 | 0.15 | 0.12 | 0.22 |
gRPC_chunk(worker 10) 10개 동시 요청 | 0.57 | 1.14 | 1.75 | 3.69 |