gRPC is designed to support high-performance open-source RPCs in many languages. This page describes performance benchmarking tools, scenarios considered by tests, and the testing infrastructure.
gRPC is designed to support high-performance open-source RPCs in many languages. This page describes performance benchmarking tools, scenarios considered by tests, and the testing infrastructure.
Overview
gRPC is designed for both high-performance and high-productivity
design of distributed applications. Continuous performance
benchmarking is a critical part of the gRPC development
workflow. Multi-language performance tests run hourly against
the master branch, and these numbers are reported to a dashboard for
visualization.
Are you seeing “no data available” messages in the performance dashboard?
This is a known issue, see grpc/grpc#23297.
Performance testing design
Each language implements a performance testing worker that implements
a gRPC
WorkerService. This
service directs the worker to act as either a client or a server for
the actual benchmark test, represented as
BenchmarkService. That
service has two methods:
UnaryCall - a unary RPC of a simple request that specifies the number of bytes to return in the response
StreamingCall - a streaming RPC that allows repeated ping-pongs of request and response messages akin to the UnaryCall