Article notes.eatonphil.com ↗
What Every Developer Should Know About Database Connection Pooling
Read the source ↗Key takeaways
- Each Postgres connection is a process on the server — hundreds of idle connections cost real memory and context-switch time, not just a connection count.
- Pooler placement matters: client-side pools (app-level) and server-side poolers (PgBouncer) solve different problems; you usually want both at scale.
- In transaction pooling mode, session-level features (prepared statements,
SET, advisory locks) break silently — the classic “works until PgBouncer” bug class. - Pool saturation shows up as latency spikes long before errors. Alert on wait time, not just pool size.