Diagnosing Pool Saturation and Queueing
Read PgBouncer stats to spot exhausted pools and waiting clients before users notice.
Why Pools Saturate
PgBouncer multiplexes many client connections onto a small set of server connections. In transaction pooling, a server connection is borrowed only for the duration of a transaction, then returned to the pool.
A pool saturates when every server connection is busy and new client requests must wait in a queue. The queue is invisible from the database's side — Postgres just sees a steady, capped number of backends — so you must read PgBouncer's own stats to see the pressure building.
pool_size= max server connections per (database, user) pool- Waiting clients = demand that exceeds that ceiling
Connecting to the Admin Console
PgBouncer exposes a virtual database called pgbouncer. Connect to it with psql using a user listed in admin_users, then run SHOW commands to read its internal state.
This is your primary diagnostic surface — there is no separate dashboard required.
-- Connect to the PgBouncer admin console
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer
-- Once inside, list the available diagnostic views
SHOW HELP;All lessons in this course
- Why Connections Are Expensive in PostgreSQL
- Transaction vs Session Pooling Modes
- Sizing Pools Against Core Count
- Diagnosing Pool Saturation and Queueing