We load tested Stresix with Stresix

Before asking anyone to trust a report, we pointed a Standard run at this site. It held all 2,500 simulated users. The interesting part is why it did not go faster, and what the report said to do about it.

What the run measured

MeasurementResult
Server4 vCPU / 8 GB, dedicated to the run
Peak load2,500 simulated users over a 10 minute ramp
Peak throughputAbout 2,600 requests per second
p95 latency707 ms
Errors0.26% of requests timed out
Server CPUAbout 36% overall, with one core pinned at 100%
VerdictKeep the server; run 4 worker processes instead of 1

What ran out

The total CPU number looked relaxed at 36%. The per-core view told the real story: one core sat at 100% while the other three mostly idled. The app was a single Node.js process, and Node runs your JavaScript on one thread. The server had room left; the process did not.

Why the answer was not a bigger server

Paying for 8 or 16 vCPUs would have changed nothing, because the app could only use one of them. The report recommended running 4 worker processes on the same 4 vCPU / 8 GB server, one per core. That is a config change, not a bill.

What the run got wrong

The run also caught two mistakes in its own report. Both are fixed. Running the product on itself first is the cheapest way to find that kind of thing before a customer does.

What this does not tell you

This is one app on one server. A page that hits a slow database query will behave very differently from this site. The load came from a server in the same datacenter, so the numbers measure server capacity, not what a visitor across the world sees. The limits page lists everything a run cannot see.

Frequently asked questions

How many users can a single Node.js process handle?

It depends on how much work each request does, but the pattern here is common: one process saturates one core long before the server is busy. Check per-core CPU, not just the total, before buying a bigger server.

Why look at per-core CPU instead of total CPU?

Total CPU averages all cores. A single-threaded app can be completely maxed out on one core while the total reads 25 to 40%, which looks like there is plenty of room when there is not.

Can I get the same report for my app?

Yes. Point Stresix at a GitHub repository or Docker image and pick Standard (2,500 users) or Massive (10,000). The report has the same sections, with your own numbers.

Related guides

Stop guessing your specs. Start knowing them.

Point Stresix at a repo or Docker image and get a number you can deploy on, in one run.

Start a load test