Load testing your feathersjs server using Artillery
If you’re curious about the peak performance of your server or you are expecting a high load of users, load testing becomes a crucial task that you must do in order to identify bottlenecks in your application and ship a scalable server.
Artillery is a modern, powerful & easy-to-use load testing toolkit. Use it to make your applications stay scalable, performant & resilient under high load.
Setting up your workspace.
yarn add artillery
This is what my
socketio-load-test.yaml file looks like:
Let’s break it down:
This is where you want to point to your API. Mine is currently set to localhost:3030 where my feathersjs server is running.
A phase defines how many new virtual users will be generated in a time period. For example, in our case we have one phase called “A user fetches people” which is self explanatory.
We have also set a duration of 300s, an arrivalRate of 5 and a rampTo value of 500. This means that we want to ramp up the arrival of new users from 5 to 500 over a 5 minutes period.
Scenarios / Flow
A scenario is a sequence of steps that will be run sequentially which represents a typical sequence of requests or messages sent by a user of an application.
In scenarios, you also have flow which represents an array of operations that the virtual user will perform (this can be a GET, POST, etc).
In our case, we only have 1 flow. We want to test the performance of finding users in our feathersjs server so we query the
The above is really all you need to start load testing your app. My scenario is very simple, but I hope it is easy to see how this can be used to test more complex scenarios and find performance bottlenecks in your API. I am using feathersjs in my example, however this can be applied to any server, http or ws.