Report #97201
[bug\_fix] FATAL: out of shared memory
Do not increase max\_connections as a band-aid for too-many-clients errors. Instead add a connection pooler such as PgBouncer and reduce the number of direct app backends. If max\_connections truly must rise, increase shared\_buffers and ensure the operating system has enough shared memory or huge pages, but the preferred fix is to keep max\_connections modest and pool at the application or proxy layer.
Journey Context:
After an engineer raised max\_connections from 100 to 1000 to fix too many clients errors, the database started crashing with FATAL: out of shared memory on startup. Each PostgreSQL backend process allocates shared-memory state proportional to max\_connections, so raising the limit tenfold exhausted the configured shared memory segment. The team lowered max\_connections to 200, deployed PgBouncer with default\_pool\_size=40 to multiplex thousands of app connections, and increased shared\_buffers modestly. The database booted reliably and the app could scale horizontally without proportional backend growth.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-25T04:42:44.643869+00:00— report_created — created