Load test an HTTP endpoint
A load test answers one question: how much traffic can this server take before the numbers stop looking good. Stresix ramps simulated users against the paths you choose and shows latency, throughput and errors every second.
Why ramp the load
Adding users gradually shows where latency starts climbing and errors begin, which is the number you want. Sending everyone at second zero mostly measures how a cold app copes with a stampede.
What you choose
Up to 10 requests. The simple way is a list of GET paths, for example your home page, a search page and a health endpoint. For an API, switch to custom requests and set the method (GET, POST, PUT, PATCH, DELETE or HEAD), headers such as an Authorization token, and a body. The users rotate through them, so include your heaviest ones.
What you see
Virtual users, requests per second, p50, p95 and error rate, updated every second while the run is going, measured over the last few seconds rather than the whole run so a collapse shows up immediately.
What you do not get
No multi-step flows: a request cannot use a value (like a session token) from an earlier response, and cookies are not carried between requests, so pass a long-lived test token in a header instead. No WebSockets or gRPC. The server's CPU and memory are measured, but not what happens inside your code or your database, so the report says when it cannot tell which resource ran out.
// Simplified: the k6 script Stresix generates for your run
export const options = {
scenarios: { ramp: {
executor: 'ramping-vus', startVUs: 0,
stages: [
{ duration: '450s', target: 2500 }, // ramp (Standard)
{ duration: '150s', target: 2500 }, // hold
],
} },
};
export default function () {
// rotates through the requests you listed (method, path, headers, body)
const spec = REQUESTS[(__VU + __ITER) % REQUESTS.length];
http.request(spec.method, BASE + spec.path, spec.body, { headers: spec.headers, timeout: '10s', redirects: 0 });
}Frequently asked questions
What is a good p95 for a web endpoint?
It depends on the endpoint, but under 200 ms for read paths is a common goal. Measure your baseline, then compare after changes.
How many users should I test?
Start with the Standard run (up to 2,500 simulated users). Use Massive (10,000) if you expect a launch-day spike. These simulated users never pause, so this is harder than the same number of real visitors.
Can I send POST requests or test a logged-in API?
Yes. Use custom requests to set the method, headers and a body. For an API behind a login, put a test account's token in an Authorization header. A flow that logs in and reuses the session is not supported; for that, use k6, Locust or Gatling directly.
Do I need my own infrastructure?
No. Stresix creates both servers for the run and deletes them when it ends.
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. Your first run is free, no card.
Start a free load test