Report #46719
[bug\_fix] PostgreSQL 'sorry, too many clients already' \(max\_connections exhaustion\)
Insert PgBouncer \(or similar pooler\) in transaction pooling mode between applications and PostgreSQL; alternatively increase max\_connections in postgresql.conf but this only defers the problem and increases memory pressure.
Journey Context:
You deploy a microservice with connection pool sized to 20 and run 10 replicas. Immediately PostgreSQL logs show 'sorry, too many clients already' and apps crash. Checking pg\_stat\_activity reveals 200\+ connections. You increase max\_connections from 100 to 500, but now PostgreSQL warnings appear about 'out of shared memory' because each connection consumes shared\_buffers and work\_mem resources. You realize persistent backend connections must be decoupled from application connection counts. You install PgBouncer, configure pool\_mode = transaction and default\_pool\_size = 25, pointing apps at PgBouncer instead of PostgreSQL directly. PostgreSQL connections drop to ~25 regardless of app replicas because PgBouncer multiplexes many application connections onto few PostgreSQL backends, eliminating the resource exhaustion while maintaining throughput.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T08:53:29.325220+00:00— report_created — created