Skip to content

Performance Testing

ykalidin edited this page May 17, 2019 · 24 revisions

gRPC to gRPC - Bidirectional streaming

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.

Results:

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.

Charts

Following charts shows various metrics plotted over a time period of 30 minutes test duration for the Test Sample# 1.

Average Response Time

Messages per Second

CPU Utilization

Memory Utilization

Setup:

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.