-
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:
Test Duration(Sec) | Messages Transferred | MegaBytes(MB) Transferred | Transactions/Sec | Bytes/Sec | Average Response Time(ns) |
---|---|---|---|---|---|
1800 | 11,77,32,940 | 3767 | 65,407 | 2093K | 8188692 |
1800 | 11,77,50,866 | 3768 | 65,417 | 2093K | 8140357 |
1800 | 11,76,95,536 | 3766 | 65,386 | 2092K | 8368201 |
1800 | 11,77,36,920 | 3768 | 65,409 | 2093K | 8282428 |
1800 | 11,78,17,030 | 3770 | 65,454 | 2095K | 7815134 |
Here MB represented in Decimal standard i.e. 1MB = 10^6 bytes.
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.
- Messages Transferred: Total number of messages transferred through Gateway.
- Bytes Transferred: Total number of bytes transferred through Gateway.
- Messages/Sec: Total number of messages transferred per second through gateway.
- Bytes/Sec: Total number of bytes transferred per second through Gateway.
-
Average Response Time(ns): Average of message
round trip
times.round trip
- time taken for a message to travel from client -> gateway -> server -> gateway -> back to the client.
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). Around 79% of CPU is utilized during the test.