Closed pawelgur closed 1 year ago
Thanks for reporting!
Can you provide steps to reproduce? We often need a reproducible example, e.g. some code that allows someone else to recreate your problem by just copying and pasting it. If it involves more than a couple of different file, create a new repository on GitHub and add a link to that.
I was able to reproduce similar behavior on dummy nodejs app: https://github.com/pawelgur/nodejs-load-test (please see readme for setup instructions).
Autocannon results for this app on my machine (based on autocannon output):
npx autocannon -R 15 -c 15 -d 30 http://localhost:3000/test --renderStatusCodes
: resulted in 15RPS as expectednpx autocannon -R 20 -c 20 -d 30 http://localhost:3000/test --renderStatusCodes
: ~19 RPS (vs 20 expected)npx autocannon -R 25 -c 25 -d 30 http://localhost:3000/test --renderStatusCodes
: ~21 RPS (vs 25 expected) npx autocannon -R 30 -c 30 -d 30 http://localhost:3000/test --renderStatusCodes
21RPS (vs 30 expected)I confirmed on application side that autocannon does not send enough requests. When using amount instead of duration, test runs longer but RPS still stays at similar level, e.g.:
npx autocannon -R 30 -c 30 -a 900 http://localhost:3000/test --renderStatusCodes
also results in 20RPSNote: max RPS when this problem occurs likely depends on specific machine, might need higher -R
and -c
values.
Running on Windows 10, node v16.17.0, I7
This looks correct, as your application cannot likely perform more than 21RPS.
Is it possible to "force" autocannon to generate specific RPS count regardless if application can handle it or not?
No, you'd need to use a different tool to perform a stress test. apache2 is great in that regard.
I am trying to understand how many RPS my nodejs application can handle before degrading and eventually failing.
I do this by running separate Autocannon tests against an endpoint increasing both connection count and overall connection rate with each run. After I've reached around ~20 RPS, I am not able to increase load regardless of options I provide (tried various combinations, including -C, increasing worker count, pipelining, using amount, etc. ).
E.g.
npx autocannon -R 40 -c 40 -d 60 https://someurl --renderStatusCodes
is generating (or at least reporting) similar RPS asnpx autocannon -R 20 -c 20 -d 60 https://someurl --renderStatusCodes
.Is this expected? If yes, is it possible to force Autocannon to generate more load?