tools / queue-wait
Queue Wait Calculator (M/M/1)
How utilisation turns into waiting time in a single-server queue.
Response time (wait + service)
Utilisation ρ
Queue wait
Avg in system
Max rate μ
Key facts
| Utilisation | ρ = λ / μ = λ · S |
|---|---|
| Response time | W = S / (1 − ρ) |
| Queue wait | Wq = ρ · S / (1 − ρ) |
| Rule of thumb | 50% busy → 2× service time; 80% → 5×; 90% → 10× |
| Assumes | Random (Poisson) arrivals, random service times, one server, unlimited queue |
Worked example
A worker takes 10 ms per request. Traffic is 80 req/s.
μ = 1 / 0.010 s = 100 req/s ρ = 80 / 100 = 0.80 W = 10 ms / (1 − 0.80) = 50 ms Wq = 0.80 × 10 / 0.20 = 40 ms waiting
The work takes 10 ms, but users see 50 ms — four-fifths of it is queueing. Push to 90% busy and response time doubles to 100 ms.
Why the curve bends
Arrivals come in bursts. When a server is mostly idle, bursts drain quickly. As it gets busier, there is less idle time to absorb each burst, so queues build faster than load grows. That is why latency explodes well before 100% utilisation.
FAQs
My system has many servers. Does this still apply?
The shape holds, but more servers sharing one queue (M/M/c) wait less at the same utilisation. Treat M/M/1 as a conservative estimate.
What utilisation should I plan for?
For latency-sensitive work, many teams cap steady load around 60–70% per resource, so bursts don't push response time onto the steep part of the curve.
How does this relate to Little's Law?
L = λW still holds. With 80 req/s and W = 50 ms, there are on average 4 requests in the system — the same ρ/(1 − ρ) the calculator shows.