h3llo.cloudДокументация

Пул соединений (PgBouncer)

Как включить PgBouncer для PostgreSQL, выбрать режим и адрес подключения.

Обновлено

PgBouncer держит много клиентских соединений и передаёт их базе через небольшой пул серверных соединений. Пригодится, если приложение открывает сотни соединений или работает в serverless-режиме.

Включение

В карточке базы PostgreSQL — блок «Пул соединений (PgBouncer)». Пул можно приостановить, возобновить и удалить.

НастройкаЗначения
Режимsession (по умолчанию) или transaction
Инстансы PgBouncer1–4, по умолчанию 2
Адресвнутренний (по умолчанию) или публичный адрес базы

Адрес подключения:

  • Внутренний — отдельный адрес пула внутри VPC, порт 5432. Прямое подключение к базе остаётся.
  • Публичный адрес базы — внешний IP базы начинает вести в пул; напрямую к PostgreSQL снаружи подключиться нельзя. Требуется внешний IP.

Подключение к пулу — с TLS (sslmode=require), тем же пользователем и паролем, что и к базе.

Режимы

  • session — клиент получает серверное соединение на всю сессию. Работает всё, что работает без пула.
  • transaction — соединение выдаётся на одну транзакцию. Нельзя полагаться на состояние сессии: SET на уровне сессии, LISTEN, advisory-блокировки, нативные prepared statements.

Размер пула

По умолчанию до 5000 клиентских соединений. Размер серверного пула:

  • session — 80 % от max_connections, поделённые между инстансами PgBouncer;
  • transaction — 2 × vCPU, поделённые между инстансами, от 5 до 100.

Пул должен помещаться в лимит базы: max_connections ≥ число инстансов × соединений на инстанс + 10. Если не помещается, увеличьте max_connections.

На странице