# Performance on NodeJS

# Benchmarking process

Given that Kumologica Runtime sits on top of NodeJS runtime, the ultimate goal is to work towards a zero-overhead over the NodeJS runtime provided by the cloud provider.

For our benchmark a typical HelloWorld api flow is going to be deployed on NodeJS app against various memory allocations: 128 Mb, 256 Mb, 512 Mb and 1024 Mb.

We will run the Kumologica server by configuring the --max-old-space-size flag with various memory setups.

The load test will be generated using Artillery with the following configuration:

config:
  target: http://127.0.0.1:1880
  phases:
    - duration: 60
      arrivalRate: 1
      rampTo: 5
      name: Warm up phase
    - duration: 60
      arrivalRate: 5
      rampTo: 10
      name: Ramp up load
    - duration: 30
      arrivalRate: 10
      rampTo: 30
      name: Spike phase
scenarios:
  - flow:
    - get:
        url: "/test"

In this test we've defined three distict phases:

  • Warm up the API - this phase will run for 60 seconds. Artillery will start by creating 1 new virtual users per second, and gradually ramp up to 5 new virtual users per second by the end of the phase.

  • Ramp up to peak load - this phase will also last for 60 seconds. Artillery will continue ramping up load from 5 to 10 virtual users per second.

  • Spike load - this phase will run for 30 seconds. Artillery will create 10 new virtual users every second during this phase, and gradually ramp up to 30 new virtual users per second until the end of the phase.

Our benchmark will be run on different memory profiles by running the command:

node kumologica-app.js --max-old-space-size=[128m|256m|512m|1024m]

# Results

The following diagram presents the performance test results in a table, highlighting critical response times across various memory setups. In all scenarios, zero errors were encountered

The source code used to conduct this performance test can be found in this Github repository (opens new window)

# Throughput report

Download the benchmark performance report capturing the throughput generated by Kumologica flow. Click here to download the report (opens new window)