What to Load-Test Before You Need To
Ten users hide sins that ten thousand expose.
[ essay ]
Ten concurrent users will not find the query that dies at two hundred. Load tests are cheap while the crowd is still imaginary. After the spike, they are an incident report.
I skipped them on darkheartlabs.technology search. Local runs were instant. A shared index lock only showed up under concurrent queries. Ten users hide missing indexes, O(n²) loops, unbounded queues, synchronous chains, and hot cache keys. Ten thousand do not. Test the paths that matter economically: search, RSS, auth, checkout if you have it. The homepage is a vanity target. Watch p95 and error rate. Averages lie when the tail is the user who leaves. A mean that no real session ever saw is a vanity metric.1
Scale problems are often a compliment: people want the thing. Your job is to make wanting it survivable. Add backpressure, idempotency, and a degraded mode while the seas are calm. Do not wait for the launch thread to discover the lock.
Load-test the expensive path before you need the number. If you only ever test the homepage, you have not tested the product.
— JV · Dark Heart Labs.
-
Martin Fowler, “Performance Testing” (martinfowler.com) — test the economically important journeys and the tail, not the mean of a page nobody is waiting on. ↩