Overload & capacity
The Brownout Dial
Overload the system on purpose, then choose what to drop so the rest survives.
How to read this lab
Push arrival rate past what your servers can serve and watch two different failure modes. With no protection, goodput (useful completions per second) collapses toward zero even though the servers stay busy — they're burning cycles on requests whose clients already gave up. Turn on shedding and goodput holds steady near capacity instead.
Controls
- Arrival rate λ
- How many requests per second arrive. Push it past capacity (servers × 3 req/s each) to trigger overload.
- Servers c
- How many workers serve requests in parallel. Capacity = servers × 3 req/s.
- Timeout
- How long a request waits before its client gives up. Tighter timeouts turn overload into wasted work faster.
- Shedding (429 fast-reject)
- Admission control — once too much work is already in flight, new arrivals are instantly rejected instead of queued.
- Retries
- Rejected or timed-out requests come back after a short delay, adding to the arrival load.
- Retry budget
- Caps how many retries can be in flight at once, so a retry storm can't snowball unbounded.
- Run rescue sequence
- Scripts a 20-second tour — overload with nothing on, then shedding, then a retry storm, then a retry budget — so the whole story plays hands-free.
What to watch for
- With shedding OFF and load high, watch Goodput climb, peak, then fall — even as Utilisation stays pinned near 100%.
- Turn Shedding ON at the same load: Reject rate jumps but Goodput recovers and holds flat.
- With Retries ON and no shedding, the collapse gets worse — rejected or timed-out work retries, adding MORE load to an already-overloaded system.
Why it happens
Servers process requests strictly in arrival order. Once the queue backs up past what timeouts allow, a server can spend its entire service time completing a request whose client already gave up — that's wasted work, not goodput. Under heavy overload almost every completion is wasted, so goodput collapses while the servers stay fully busy doing nothing useful. Shedding fixes this by capping how much work is ever admitted, so nothing waits long enough to become wasted work.
Try this first — Set Arrival rate to ~30, watch Goodput climb then collapse toward zero — then flip Shedding on and watch it recover.
Warming up…
The simulation just (re)started — give it a moment to reach steady state before reading the numbers below.
- Goodput (completed/s)
- Throughput (all/s)
- Timeouts/s
- SLO band (capacity)
- Reject zone
Parameters
Admission control
Scripts: collapse → shedding → retry storm → retry budget over 20 s.
Goodput
0.0req/s
Original completions/s
Utilisation ρ
0%
0/4 servers busy
Reject rate
0.0req/s
0 total fast-rejects
In-system L
0
Queue depth: 0