Пул соединений (PgBouncer)
Как включить PgBouncer для PostgreSQL, выбрать режим и адрес подключения.
Обновлено
PgBouncer держит много клиентских соединений и передаёт их базе через небольшой пул серверных соединений. Пригодится, если приложение открывает сотни соединений или работает в serverless-режиме.
Включение
В карточке базы PostgreSQL — блок «Пул соединений (PgBouncer)». Пул можно приостановить, возобновить и удалить.
| Настройка | Значения |
|---|---|
| Режим | session (по умолчанию) или transaction |
| Инстансы PgBouncer | 1–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.