Skip to content

Performance Testing

ykalidin edited this page May 3, 2019 · 24 revisions

gRPC to gRPC - Bidirectional streaming

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:

Results:

Sample No. Test Duration(Sec) Throughput Average Response Time(ns)
Messages Processed/Sec Kilo Bytes Processed/Sec
1 1800 65,847 2107 54,13,402
2 1800 65,829 2107 53,34,842
3 1800 65,820 2106 53,53,679
4 1800 65,780 2105 54,47,949
5 1800 65,808 2106 54,31,624

 

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(ns): Average of message round trip time. round trip - time taken for a message to travel from client -> gateway -> server -> gateway -> back to the client.

Memory and CPU Utilization Graph:

The test starts from the 2nd Minute and ends in the 32nd Minute.The total test duration is 30 Minutes.

An average of 50% of CPU is utilized. The memory utilization is around 4%.

Setup:

Test set up consists of 3 programs (Test-Runner and gRPC-Echo-Server running in EC2 Instance 1 and the Gateway running in EC2 instance 2)

  • 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).

Clone this wiki locally