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(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.

Memory and CPU Utilization Graph:

An average of 80% of CPU is utilized. The Gateway utilizes around 1.7% of the memory.

Setup:

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

Clone this wiki locally