Cookbook recipe

Connection pooling with PgBouncer (transaction vs session)

Applies to PostgreSQL 13–17 Last reviewed May 2026 Grounded in source
Estimated investigation4 min

Scenario

Hundreds of app connections overwhelm PostgreSQL. PgBouncer multiplexes them onto a small pool of real backends. Diagnose it Count real backends vs app connections: SELECT count(*) FROM pg_stat_activity; SHOW max_connections; Why it happens Each PostgreSQL backend…

Investigation Path

Hundreds of app connections overwhelm PostgreSQL. PgBouncer multiplexes them onto a small pool of real backends.

Diagnose it

Count real backends vs app connections:

SELECT count(*) FROM pg_stat_activity;
SHOW max_connections;

Why it happens

Each PostgreSQL backend is a process with real memory cost. Thousands of mostly-idle app connections waste memory and scheduling. A pooler keeps a few warm backends and hands them out per transaction.

This is a Pro lesson

Get every Learning Pathway and cookbook recipe — grounded in PostgreSQL source code, with diagnostics, fixes, and prevention for each topic.

Continue this lesson to learn:

  • How to fix it
  • Prevent it next time
  • Related & next steps
  • All 36 Learning Pathway lessons
  • 170+ cookbook recipes
  • Source-grounded diagnostics & fixes

Secure checkout Cancel anytime Source-grounded

Career Impact

This scenario builds production judgment and operational confidence under pressure.

Open Career Dashboard →

Keep going

Related & next steps

Was this helpful?

← All cookbook recipes