-
Notifications
You must be signed in to change notification settings - Fork 9
Performance Testing
The objective of this performance testing is to observe how well flogo-microgateway
proxies a gRPC endpoint using a general purpose EC2 instance.
Following are the key performance metrics captured for flogo-microgateway
, when 500 concurent gRPC clients stream messages (send & receive) through the flogo-microgateway
running on a EC2 instance - t3.medium(Variable ECUs, 2 vCPUs, 2.5 GHz, Intel Skylake P-8175, 4 GiB memory, EBS only). Here flogo-microgateway
is a bidirectional gRPC proxy gateway with no policies attached and it is fronting a gRPC echo server.
Test Sample# | Test Duration (Sec) | Throughput | Average Response Time (ms) | |
Messages Processed / Sec | Kilobytes Processed / Sec | |||
1 | 1800 | 93,905 | 3005 | 7.70 |
2 | 1800 | 94,170 | 3013 | 7.34 |
3 | 1800 | 94,156 | 3013 | 7.31 |
4 | 1800 | 93,957 | 3007 | 7.62 |
5 | 1800 | 94,169 | 3013 | 7.31 |
6 | 1800 | 94,202 | 3014 | 7.19 |
- Test Duration: Total test duration in Seconds.
- Throughput (Messages Processed/Sec): Number of messages(Upstream + Downstream) transferred through the gateway per Second.
- Throughput (Kilo Bytes Processed/Sec): Amount of data in Kilobytes(Upstream + Downstream) transferred through the gateway per second.
-
Average Response Time (ms): Average of message
round trip
times in Milliseconds.round trip
is the time taken for a message to travel from a client -> gateway -> echo server -> gateway -> back to the client.
Following charts shows various metrics plotted over a time period of 30 minutes test duration for the Test Sample# 1
.
This test is based on gPRC bidirectional proxy gateway example. Below diagram describes how various components are being placed & connected with each other for the test:
The test set up consists of 3 components (Test-Runner, flogo-microgateway & gRPC-Echo-Server) running on a single EC2 instance.
- Test-Runner ->
go
based application which simulates 500 gRPC clients & captures statistics. - flogo-microgateway -> gRPC-Bidirectional proxy gateway with no policies attached.
- gRPC-Echo-Server ->
go
based light weight gRPC echo server which reads message object from the incoming stream and writes the same on to the outgoing stream.
During the test, Test-Runner application instantiates 500 gRPC clients with 20ms wait time between 2 consecutive instantiations. Each gRPC-Client establishes connection with flogo-microgateway
(which is fronting gRPC-Echo-Server) and starts sending & receiving messages simultaneously with 10ms wait time between 2 consecutive message sends.
Thus each message gets created at the client, traverse through the flogo-microgateway, reaches echo-server and back to the client (path: Client -> flogo-microgateway -> gRPC-Echo-Server -> flogo-microgateway -> Client). While traversing each message carries origin timestamp as payload (of 32 bytes), the same timestamp is used by Test-Runner to calculate the message round trip time (also referred as response time) when it reaches back to the client.