Open chappjc opened 5 years ago
I've done a couple stress tests using locust for REST APIs. With locust, endpoints are configured in a python script and the tool can be run locally or even in a master/slave setup (I think I used one m4.large EC2 instance as the master and several r5.large or Heroku slaves depending on use case for real world tests). The larger tests were simulating ~400K simultaneous logged-in users interacting every couple seconds with a statically defined endpoint list.
I'm not sure what test size is needed here, but the bottleneck I'd eventually run into beyond 500K users was RAM usage as locust creates individual threads/processes for each user - hence the memory optimized EC2 instances.
Locust doesn't natively support websocket as far as I know, but there seem to be solutions to do it by changing the source.
I can take this issue if needed.
Partially resolved by https://github.com/decred/dcrdata/pull/924, although the websocket stress test is needed.
This complements the Insight socket.io tests in https://github.com/decred/dcrdata/issues/912.
To support many non-browser client connections, stress testing needs to be performed on the following components:
This issue refers to 1. and 2., while https://github.com/decred/dcrdata/issues/912 refers to 3.
Since @buck54321 is interested in this, the issue is tentatively assigned to him. The first step should be to get a proof-of-concept stress test client running that the devs can hack on.
Some ideas from a Slack disussion: