Docs / Databases / How to Use pgBouncer for PostgreSQL Connection Pooling

How to Use pgBouncer for PostgreSQL Connection Pooling

By Admin · Mar 1, 2026 · Updated Apr 23, 2026 · 27 views · 1 min read

How to Use pgBouncer for PostgreSQL Connection Pooling

pgBouncer is a lightweight connection pooler for PostgreSQL that reduces connection overhead and improves performance on your Breeze.

Why Connection Pooling

  • PostgreSQL forks a process per connection, consuming significant memory
  • Applications may open hundreds of connections under load
  • pgBouncer multiplexes many client connections to fewer database connections

Installation

sudo apt install pgbouncer -y

Configuration

Edit /etc/pgbouncer/pgbouncer.ini:

[databases]
mydb = host=127.0.0.1 port=5432 dbname=mydb

[pgbouncer]
listen_addr = 127.0.0.1
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
default_pool_size = 20
max_client_conn = 200
max_db_connections = 50

Set Up Authentication

Add users to /etc/pgbouncer/userlist.txt:

"myuser" "md5hashofpassword"

Generate the hash from PostgreSQL:

psql -U postgres -c "SELECT concat('\"', usename, '\" \"', passwd, '\"') FROM pg_shadow WHERE usename = 'myuser';"

Pool Modes

  • session - connection assigned for entire session (safest)
  • transaction - connection returned after each transaction (recommended)
  • statement - connection returned after each statement (most aggressive)

Start and Connect

sudo systemctl enable --now pgbouncer
psql -h 127.0.0.1 -p 6432 -U myuser mydb

Your Breeze applications now connect through pgBouncer, dramatically reducing PostgreSQL resource usage.

Was this article helpful?