Tail Latency: Why p99 Matters More Than Average
Why average response time hides the experience of your worst-served users, and how to measure, diagnose, and reduce tail latency in production systems.
Category
12 articles
Why average response time hides the experience of your worst-served users, and how to measure, diagnose, and reduce tail latency in production systems.
A practical workflow for finding and fixing JavaScript memory leaks in browser apps using heap snapshots, detached DOM detection, and retainer analysis.
A practical comparison of gzip, Brotli, and zstd for HTTP response compression, covering ratio, CPU cost, and where each one actually wins.
How request batching and the DataLoader pattern eliminate N+1 query storms in APIs, with a look at when batching helps and when it just adds latency.
A practical look at how HTTP/2 and HTTP/3 multiplexing affect application design, when it helps, and where old HTTP/1.1 habits still hurt you.
Why the fastest-feeling apps aren't always the fastest apps, and how skeletons, optimistic updates, and honest progress bars change user perception.
A 200ms response time target means nothing until it's broken down into a budget per component — otherwise every team assumes someone else owns it.
When a database is suddenly slow, the order you check things in matters — a triage sequence that finds the real cause before you start guessing.
A bundle size budget that isn't enforced in CI is a suggestion, and suggestions don't survive contact with a deadline — here's how to make it stick.
Lazy loading isn't just deferred images — the same principle applies to JS bundles, database relations, and API responses, each with its own trade-offs.
Browser, CDN, application, and database caching each solve a different problem and fail differently — knowing which layer to reach for matters.
The fastest way to waste a sprint is optimizing code that was never the bottleneck — a repeatable workflow for measuring before you touch anything.