Skip to content

Performance Testing

ykalidin edited this page Apr 23, 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:

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.

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). Around 79% of CPU is utilized during the test.

Clone this wiki locally