Report #17259
[bug\_fix] FATAL: sorry, too many clients already
Implement a connection pooler \(PgBouncer or pgpool-II\) in transaction pooling mode to multiplex many application connections over a smaller, fixed number of actual PostgreSQL server connections. Simply increasing max\_connections is not recommended because each connection consumes significant memory \(work\_mem, temp\_buffers, etc.\) and can degrade performance due to lock contention and CPU overhead.
Journey Context:
A Node.js microservice running on Kubernetes with 20 pods, each configured with a connection pool of 10, begins crashing on startup with 'FATAL: sorry, too many clients already'. The developer checks pg\_stat\_activity and sees 200 connections attempting to connect against a default max\_connections of 100. Initially, they consider raising max\_connections to 500, but monitoring shows memory usage spiking and TPS dropping due to lock contention. They realize the application connections are mostly idle. By introducing PgBouncer as a sidecar configured with pool\_mode=transaction, max\_client\_conn=10000, and default\_pool\_size=20, the 200 application connections are funneled into just 20 actual Postgres backends. The error disappears and latency stabilizes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:52:41.998887+00:00— report_created — created