How to decide which executor to use & how to estimate hardware requirement?

Hey Team!
Thanks for making this awesome tool, k6 is actually a lot better & has smaller learning curve than most of the bad boys out there.

However, my team has been struggling with understanding hardware requirements for k6, we want to load test our APIs at 1000RPS. We used the constant-request-rate executor with 3000VUs but we were only able to achieve around 100RPS with that. In one of the blog post, 1000RPS was achieved only by 150VUs.
Does k6 spins up different VUs on different machines? How should we estimate the number of VUs we may need to generate 1000RPS on our endpoint? We are also planning to setup an EC2 instance to remotely execute our scripts, how should we determine the hardware requirements which k6 would need?

Your help will be really appreciated :pray: !

Thanks in advance!

Hi @kushthedude, welcome to the forum and sorry for the slow response :frowning:

All of this depends on what you want and need. The constant-arrival-rate (not request) is likely what you want, it will start an iteration at the provided rate for as long as there is VU that can run it. Given your experience, I would expect that you http_request_duration average was around (3000/100 = )30s.

If this is the case and you want to get 1000 RPS you will need 30000 VUs which is doable on a single machine, but I would argue that if this is the case you probably will want your request duration to be lower.