Skip to content

Metrics & Measurement

What Is Throughput in Load Testing?

Throughput is the rate of work a system completes over time — usually requests, transactions, or bytes per second, measured at the completing end.

Also known as: Transaction Rate

Throughput is an output, not an input

You configure virtual users and think time; the system decides the throughput. This is the most common misreading of a load test result — treating a throughput figure as the load that was applied rather than the work that got done.

The distinction becomes critical past the saturation point. Add 2,000 more VUs to a saturated system and throughput does not move; only response time does. A report that says “we tested at 8,000 requests per second” when the system only ever completed 3,000 is describing an intention, not a measurement.

Throughput and response time move together

The two are linked by concurrency: throughput = concurrency ÷ response time. While a system has headroom, adding users raises throughput and leaves response time roughly flat. Once a resource saturates, throughput plateaus and every additional user converts directly into waiting.

The shape of that relationship is the single most informative graph a load test produces. A flat throughput line with a climbing response-time line means you have found the ceiling, and nothing above it is worth testing further.

Measure it where the work completes

Throughput counted at the load generator and throughput counted at the server can differ substantially, and the gap is itself a finding. Requests that timed out, got dropped by a load balancer, or returned a 503 may be counted as sent but never completed useful work.

Always pair the number with an error rate. Throughput that includes failed responses flatters a struggling system: 5,000 requests per second is not a good result when 1,800 of them are errors returned quickly.

What limits throughput

Throughput is capped by whichever stage in the request path is slowest, exactly like a production line. Widening anything else changes nothing until that stage is widened, which is why optimisation work aimed at the wrong tier so reliably produces no measurable improvement.

  • Concurrency limits — worker counts, thread pools, and connection pools put a hard ceiling on in-flight work.
  • Per-request cost — CPU time, query time, and time spent waiting on upstream services.
  • Serialisation points — a global lock, a single-writer database, or a queue consumed by one worker.
  • External quotas, which cap throughput at a number you do not control.

Related terms

Ready to push your limits?

Start with 500 VUs, real cloud infrastructure, and real metrics — no credit card required. Upgrade only when you outgrow it.

Free forever — 500 VUs, 10-minute runs, no credit card