← All projects
Applications & services · Go
LG

loadgun

HTTP load testing — configure RPS, duration and concurrency; the simulator reports nearest-rank percentiles on a live histogram.

Configure the run

Simulates a target: latency ≈ base + queueing under concurrency + noise. Percentiles use the same nearest-rank rule as the Go code — a p95 is a latency that actually happened. Requests that error before a response (timeouts) are left out of the latency distribution; a 5xx still has a latency and stays in, matching internal/report.

Results

Requests
—
Succeeded
—
Failed
—
Throughput
—
Received
—
min
—
mean
—
p50
—
p90
—
p95
—
p99
—
max
—

Latency distribution

bucket count p95 marker 10 equal-width buckets, min→max (same as Histogram())
$ loadgun -n 500 -c 25 http://localhost:8080/health

Four decisions that make the numbers meaningful

  • Percentiles are nearest-rank, not interpolated. p95 is a latency a request actually experienced.
  • A request that errors has no latency. Timeouts stay out of the distribution; a 503 is still measured.
  • Duration stops new requests; it does not cut in-flight ones.
  • The body is drained before the clock stops. Keep-alive measures the server, not the handshake.

Status codes

CodeCount
Run a test

Exit code is 1 if anything failed — use it as a one-line CI gate.

48 tests · Go · single static binary · race-clean · Built by Umer Hashmi