Thread Pool Starvation in ASP.NET: Why Restarts Fix Latency Only Temporarily
Thread pool starvation in ASP.NET occurs when worker threads get blocked waiting on synchronous I/O, locks, or slow dependencies, preventing new requests from being scheduled despite low CPU usage. The condition causes latency to spike across multiple endpoints simultaneously while throughput drops, making it appear as though the entire service is overloaded rather than just waiting. A common operational tell is that restarting the service temporarily restores normal latency, only for the slowdown to return under the same traffic patterns as the backlog rebuilds. Engineers can confirm starvation by charting p95/p99 latency alongside throughput rather than relying on CPU metrics alone, and by logging dependency call durations with timeout budgets. The recommended fixes include removing synchronous waits in high-traffic code paths, adding concurrency caps around slow dependencies, and instrumenting active request counts to catch queueing early.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in