Load test
A load test checks that your system performs acceptably at the traffic you actually expect. It answers one question: “Does the system meet its SLOs when a realistic number of users are active at the same time?”
Before you start
Section titled “Before you start”- A smoke test has passed against the same target.
- You have an estimate of your peak concurrent users or target RPS. See How much load do you need?.
- Your target environment is sized to handle real traffic (staging or production).
What is a load test?
Section titled “What is a load test?”A load test holds a realistic number of virtual users long enough to show how the system behaves at steady state. A stress test pushes past the limits. A load test stays inside the expected operating range.
A good load test has three phases:
- Ramp-up. Raise VUs gradually to the target level, which avoids cold-start noise.
- Hold / plateau. Keep the target VU count long enough for the system to reach steady state (≥ 10 min for most systems).
- Ramp-down (optional). Lower VUs gradually. This lets you watch drain behaviour.
How to run a load test in MaxoPerf
Section titled “How to run a load test in MaxoPerf”Load profile
Section titled “Load profile”| Parameter | Value |
|---|---|
| Virtual users (VUs) | 50–500 (match your expected peak concurrency) |
| Ramp-up | 2–5 min to target VU count |
| Hold duration | 10–30 min at plateau |
| Stop mode | Duration |
| Locations | 1–3 managed cloud regions |
Console walk-through
Section titled “Console walk-through”-
From your project, click New test (or open an existing one and click Edit).
-
Upload your test script. A typical Taurus YAML for a load test:
execution:- executor: jmeterconcurrency: 100ramp-up: 3mhold-for: 15mscenario: api-loadscenarios:api-load:requests:- url: https://api.staging.example.com/v1/productslabel: list-products- url: https://api.staging.example.com/v1/cartlabel: get-cartmethod: POSTbody: '{"userId":"user-42"}' -
In Load profile, set Virtual users to your target concurrency (e.g.,
100), Ramp-up to3m, and Duration to15m. -
Select 1–3 managed locations. For a distributed load test, see Multi-region distributed load.
-
Optionally, set Failure criteria (for example, p95 < 500 ms) so the run is marked
failedautomatically if it breaches the threshold. See Failure criteria. -
Click Run and watch the live results.
How to read the result
Section titled “How to read the result”Once the run reaches finished, open the Overview tab:
- Throughput (RPS). Confirm it levels off on the plateau. A climbing or crashing throughput line means the system is not at steady state.
- p95 latency. This is your headline metric. It should stay below your SLO threshold for the whole hold phase.
- Error rate. It should be near zero. Any errors during the plateau are a problem.
- Runners tab. Check that all runners were healthy. A saturated runner skews latency readings.
If this is the first successful run at this profile, tag it baseline. You can compare
later load tests against it.
Do / don’t
Section titled “Do / don’t”| Do | Don’t |
|---|---|
| Use a ramp-up to avoid cold-start noise | Start at full VU count with no ramp, which can spike error rates |
| Run long enough to see steady-state (≥ 10 min hold) | Stop after 2 min and declare the test done |
| Base VU count on real traffic data or estimation | Guess a “big” number that your system cannot handle |
| Set failure criteria so CI gates automatically | Manually inspect every run without a pass/fail threshold |
| Compare to a known baseline run | Draw conclusions from a single run |
Where to go next
Section titled “Where to go next”- Stress test: push beyond the load-test VU count to find the breaking point.
- Baseline regression test: turn this run into a CI gate.
- Foundations: Core metrics explained: RPS, error rate and percentiles.
- Cookbook: Staged ramp profile: build a multi-stage ramp for more realistic traffic shapes.