Connection Bottlenecks

Pool exhaustion.

Identifying connection bottlenecks

Connection bottlenecks show up as application latency, not service latency. The discipline is recognising the symptoms before reaching for the wrong fix; "the app is slow" can mean the app is queueing for connections, not that the downstream is slow.

Connection pool sizing

Pool sizing is its own discipline. Defaults are usually wrong, idle-in-transaction is a trap, and the math depends on worker model and downstream capacity together.

TCP-level bottlenecks

Below the application sits TCP. File descriptors, time-wait state, and ephemeral ports all bottleneck silently and produce confusing symptoms when they hit their limits.

Multiplexing patterns

Multiplexing replaces N connections with 1 by sharing the underlying socket. HTTP/2, gRPC, and database poolers all use the pattern; reaching for it before raising connection limits is usually the right call.

Monitoring connection state

Monitoring closes the loop. Pool utilisation, acquire latency, per-destination count, and eviction count together tell you the connection layer's actual health.