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
| Measurement | Result |
|---|---|
| Server | 4 vCPU / 8 GB, dedicated to the run |
| Peak load | 2,500 simulated users over a 10 minute ramp |
| Peak throughput | About 2,600 requests per second |
| p95 latency | 707 ms |
| Errors | 0.26% of requests timed out |
| Server CPU | About 36% overall, with one core pinned at 100% |
| Verdict | Keep 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