Intermittent connection pool exhaustion symptoms during high TCP concurrency on Windows 11
0 reputation · 30 Jan 2026, 06:43 UTC
0 reputation · 30 Jan 2026, 06:43 UTC
The goal is to assess whether an imbalance in Receive Side Scaling (RSS) queue distribution can produce symptoms that resemble intermittent connection pool exhaustion when Windows 11 handles a sustained high volume of concurrent TCP connections.
Constraints include the dependence on the network adapter driver’s reported queue count, the possibility that RSS queues are fewer than the number of logical processors or are affinitized to a subset of cores, and the need to correlate RSS‑related performance counters with connection‑pool metrics without altering the adapter state during measurement.
What specific RSS counter patterns indicate an imbalance that could limit effective connection handling?
How does the relationship between the reported NumberOfReceiveQueues and the system’s logical processor count influence the likelihood of observing pool‑exhaustion‑like symptoms under load?
35775 reputation · 30 Jan 2026, 11:49 UTC
An imbalance in Receive Side Scaling (RSS) queue distribution can produce symptoms that resemble intermittent connection pool exhaustion, but it does not physically exhaust the TCP port range or the application's configured pool size. Instead, skewed RSS distribution can saturate specific CPU cores with network interrupt processing, delaying TCP handshake completion and ACK generation. When request threads stall waiting for network I/O, the application pool appears exhausted even though system-wide resources remain available.
During a load event, collect these counters without changing adapter state, and sample them alongside your connection-pool metrics:
If per-core interrupt time or queue length spikes align temporally with pool-acquisition timeouts, the imbalance is a plausible contributor. If pool metrics degrade while interrupt counters stay flat, the cause is more likely pool sizing or connection leaks.
The relationship between the driver-reported NumberOfReceiveQueues and the total logical processor count determines how much parallel receive processing is possible:
NumberOfReceiveQueues is significantly lower than the logical processor count, interrupt handling is concentrated on too few cores. Under sustained high TCP concurrency, those cores become bottlenecks, delaying the TCP state machine and causing application-level timeouts.Run these read-only checks in an administrative PowerShell session:
Get-NetAdapterRss
netsh int tcp show global
Compare NumberOfReceiveQueues from Get-NetAdapterRss against the logical processor count. Also verify that TCP Chimney Offload or NetDMA is not interfering with RSS behavior, since these features can mask the root cause. Note that not all drivers expose per-queue counters in Performance Monitor; consult the NIC vendor's diagnostics if the queue-level view is unavailable.
Are the observed failures immediate timeouts during connection establishment (suggesting interrupt-processing latency), or are they 'no available slots' errors only during sustained peak load (suggesting a genuine pool-sizing or connection-leak issue)?
Use comments to ask for clarification. Post a solution as an answer.
35,775 reputation · 30 Jan 2026, 13:05 UTC
When a NIC advertises NumberOfReceiveQueues that exceeds the number of logical processors, Windows will cap the active queues at the processor count. In that scenario each queue services more threads, raising lock contention and throttling the OS’s ability to open new TCP connections. Look for a persistent high depth or utilization on a subset of queues while others stay low. A non‑zero Receive Queue Drop Count is a clear sign that traffic is being rejected due to the imbalance.
Run a sustained high‑concurrency test, monitor netstat for ESTABLISHED counts, and simultaneously capture the three RSS counters. If spikes in ESTABLISHED coincide with queue‑depth surges on a few queues, the pool‑exhaustion‑like symptoms are likely driven by RSS, not the application’s pool limits.