Given a Poisson arrival rate λ, an exponential mean service time 1/μ, and c identical servers, the Erlang C formula predicts the probability an arriving job has to wait, how long the average wait is, and how long the queue gets. Use it to size call centers, thread pools, connection pools, backend replicas — anything with a shared queue in front of a fixed pool of workers.
P(wait > t):
Same λ and 1/μ, varying c. Highlighted row is the minimum staff level that meets your SLA (target service level ≥ 80%).
Agner Krarup Erlang published the formula in 1917 while working out how many telephone circuits a Copenhagen switchboard needed. The model — Poisson arrivals, exponential service, c parallel servers, unbounded FIFO queue, no reneging — is written in Kendall notation as M/M/c. It stays useful a century later because most real-world contention (threads waiting for a DB connection, requests queued behind CPUs, callers waiting for an agent) sits close enough to those assumptions for the numbers to be actionable.
a = λ/μ (Erlangs). Dimensionless "amount of continuous work".ρ = a/c. Must be strictly below 1 or the queue grows without bound.B(c,a) = (ac/c!) / Σk=0..c ak/k! — computed with the stable recursion B(k) = a·B(k-1) / (k + a·B(k-1)).C = c·B / (c − a + a·B).Wq = C / (cμ − λ). Total sojourn W = Wq + 1/μ.Lq = λ·Wq (Little's law).SL(t) = 1 − C·e−(cμ−λ)t.As a rule of thumb, staffing much beyond ρ ≈ 0.85 pays for itself only when the tail matters — the SLA sweep below shows exactly how much each extra server buys you.