Understanding results

Learn how to read load test metrics and make data-driven decisions about your infrastructure.

Key metrics

Response time

http_req_duration

How long your server takes to respond. Look at the median (p50) for typical performance and p95/p99 for tail latency.

Good
p95 under 500ms for APIs, under 2s for web pages
Investigate
p95 over 1s for APIs, or rising steadily over time

Throughput

http_reqs

Requests per second your server handles. In an arrival-rate run the plan fixes the rate sent, so throughput should track the plan.

Good
Throughput matches the rate the plan asked for
Investigate
Throughput falls short of the plan: k6 ran out of VUs and dropped iterations, because responses slowed down

Error rate

http_req_failed

Share of requests that returned an HTTP error or failed to connect. loadtest.dev splits it into 5xx, 4xx, 429, timeout and transport.

Good
Under 0.1% for production-ready systems
Investigate
Over 1%: look at which class grew before fixing anything

Rate limited

429

Responses refused by a rate limiter. On a preview, a signed load run skips the narduk-core limiter, so a 429 there comes from somewhere else. Production keeps its limits, and 429s are reported as their own class.

Good
None on a preview
Investigate
Any 429 on a preview: another limiter sits in front of the app

Check pass rate

checks

How many of your custom checks passed. Checks validate response bodies, headers, and status codes.

Good
Over 99% pass rate
Investigate
Under 95%: your API returns unexpected responses under load

Data transfer

data_received / data_sent

Total bytes transferred during the test. Useful for estimating bandwidth costs and spotting payload bloat.

Good
Consistent with expected response sizes
Investigate
Much larger than expected: check for verbose logging or debug responses

Understanding percentiles

Averages lie. If your average response time is 200ms but your p99 is 5 seconds, 1 in 100 requests has a terrible experience. Always use percentiles, and never average them across machines: loadtest.dev merges the latency histograms from every container and reads percentiles from the result.

PercentileWhat it means
p50 (median)Half of requests are faster than this. Your typical response time.
p9090% of requests are faster. A good SLA target for most APIs.
p9595% of requests are faster. The usual standard for API performance SLAs.
p99Only 1 in 100 requests is slower. Critical for high-traffic apps.

Red flags to watch for

Response time rises with the rate
Your server is saturated. Scale horizontally or remove the bottleneck.
Throughput falls below the planned rate
You hit a concurrency limit. Check database connections, pools, and rate limits.
Error rate spikes suddenly
Usually resource exhaustion. Check memory, CPU, and connection pool limits.
Wide gap between p50 and p99
Inconsistent performance. Look for cold caches, garbage collection pauses, or noisy neighbours.
loadtest.dev — Part of the Narduk Enterprises network