Moved benchmark to its own directory and added multicore testing + a README
This commit is contained in:
parent
d4fe59d154
commit
b37a8f63be
11 changed files with 160 additions and 1337 deletions
69
benchmark/README.md
Normal file
69
benchmark/README.md
Normal file
|
@ -0,0 +1,69 @@
|
|||
# Load testing
|
||||
|
||||
Load testing is performed with Artillery.
|
||||
|
||||
Install:
|
||||
|
||||
```bash
|
||||
cd benchmark
|
||||
npm install
|
||||
```
|
||||
|
||||
Running the tests (on one core):
|
||||
|
||||
```bash
|
||||
cd benchmark
|
||||
npm run start
|
||||
```
|
||||
|
||||
You can adapt the `socketio-load-test.yaml` file to increase/decrease load.
|
||||
|
||||
Default settings are:
|
||||
|
||||
```yaml
|
||||
phases:
|
||||
- duration: 20
|
||||
arrivalRate: 2
|
||||
```
|
||||
|
||||
which means: during 20 seconds, 2 users will be added every second (peaking at 40 simultaneous users).
|
||||
|
||||
Important: don't go above 40 simultaneous users for Artillery, otherwise, it is Artillery that will fail to run the tests properly.
|
||||
To know, simply run "top". The "node" process for Artillery should never reach 100%.
|
||||
|
||||
Reports are generated in `artillery_output.html`.
|
||||
|
||||
# Multicore tests
|
||||
|
||||
You will want to test with Artillery running on multiple cores.
|
||||
|
||||
You can use
|
||||
|
||||
```bash
|
||||
./artillery_multi_core.sh
|
||||
```
|
||||
|
||||
This will trigger 4 Artillery instances in parallel.
|
||||
|
||||
Beware, the report generated is generated for only one instance.
|
||||
|
||||
# How to test, what to track?
|
||||
|
||||
While testing, you can check:
|
||||
|
||||
- CPU load of WorkAdventure API node process (it should not reach 100%)
|
||||
- Get metrics at the end of the run: `http://api.workadventure.localhost/metrics`
|
||||
In particular, look for:
|
||||
```
|
||||
# HELP nodejs_eventloop_lag_max_seconds The maximum recorded event loop delay.
|
||||
# TYPE nodejs_eventloop_lag_max_seconds gauge
|
||||
nodejs_eventloop_lag_max_seconds 23.991418879
|
||||
```
|
||||
This is the maximum time it took Node to process an event (you need to restart node after each test to reset this counter)
|
||||
- Generate a profiling using "node --prof" by switching the command in docker-compose.yaml:
|
||||
```
|
||||
#command: yarn dev
|
||||
command: yarn run profile
|
||||
```
|
||||
Read https://nodejs.org/en/docs/guides/simple-profiling/ on how to generate a profile.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue