-
Notifications
You must be signed in to change notification settings - Fork 9
Performance Testing
Objective of this performance testing is to observe how well flogo-microgateway proxies a gRPC endpoint using a general purpose VM.
Following are the key performance metrics captured, when 1000 concurent gRPC clients stream messages (send & receive from gRPC echo server) through flogo-microgateway running in a EC2 instance:
Sample No. | Test Duration(Sec) | Throughput | Average Response Time(ms) | |
Messages Processed/Sec | Kilo Bytes Processed/Sec | |||
1 | 1800 | 65,407 | 2093 | 8.18 |
2 | 1800 | 65,417 | 2093 | 8.14 |
3 | 1800 | 65,386 | 2096 | 8.36 |
4 | 1800 | 65,409 | 2093 | 8.28 |
5 | 1800 | 65,454 | 2095 | 7.81 |
EC2 instance specification: t3.medium(Variable ECUs, 2 vCPUs, 2.5 GHz, Intel Skylake P-8175, 4 GiB memory, EBS only).
- Test Duration: Total test time in Seconds.
- Throughput (Messages Processed/Sec): Number of messages(Upstream + Downstream) transferred per second through the gateway.
- Throughput (Kilo Bytes Processed/Sec): Number of bytes(Upstream + Downstream) transferred per second through the gateway in Kilo values.
-
Average Response Time(ms): Average of message
round trip
time.round trip
- time taken for a message to travel from client -> gateway -> server -> gateway -> back to the client. Captured in Milliseconds.
An average of 80% of CPU is utilized. The Gateway utilizes around 1.7% of the memory.
Test set up consists of 3 programs (Test-Runner, Gateway & gRPC-Echo-Server) running on a single EC2 instance.
- Test-Runner -> It is a go based application which simulates 1000 gRPC clients & captures required statistics.
- Gateway -> It's a Grpc-Bidirectional Streaming Example based microgateway
- gRPC-Echo-Server ->The light weight gRPC Echo Server which reads message object from incoming stream and writes the same on to outgoing stream.
During the test, Test-Runner application instantiates 1000 gRPC clients with 20ms wait time between 2 consecutive instantiations. Each gRPC-Client establishes connection with microgateway (acts as proxy for gRPC-Echo-Server). And then starts sending & receiving messages simultaneously with 30ms wait time between 2 consecutive message sends. Message payload holds the origin timestamp and its size is 32 bytes. The message payload timestamp will be used by Test-Runner to calculate round trip time when it reaches back to the Client (message path: Client -> Microgateway -> Echo Server -> Gateway -> Client). Test-runner application captures all messages with time stamps and calculates average round trip time (also referred as response time).