Пулер соединений PgBouncer в кластере PostgreSQL
В PostgreSQL для обработки каждого соединения клиента создается отдельный процесс. Чем больше число соединений, тем больше процессов, которые используют оперативную память. Максимальное число соединений с процессом PostgreSQL определяется параметром max_connections.
Чтобы оптимизировать потребление ресурсов, можно использовать пулер соединений. Клиенты подключаются не напрямую к PostgreSQL, а к пулеру соединений. При этом поддерживается небольшое количество соединений между пулером и сервером PostgreSQL — пулер создает новое соединение или повторно использует одно из существующих. Количество соединений между пулером и базой данных на каждой из нод кластера определяется размером пула (параметр pool_size).
В кластерах облачных баз данных PostgreSQL используется пулер соединений PgBouncer. Доступно три режима пулинга PgBouncer. Подробнее о пулере соединений в документации PgBouncer.
Максимальное число соединений с процессом PostgreSQL (max_connections)
Параметр СУБД PostgreSQL max_connections определяет максимальное число одновременных соединений с процессом PostgreSQL. По умолчанию установлено значение 100 соединений.
Вы можете изменить значение параметра в настройках СУБД в панели управления на значение максимального количества соединений при нагрузке. Учитывайте, что каждое соединение расходует ресурсы оперативной памяти.
Изменение значен ия max_connections влечет за собой перезагрузку нод кластера PostgreSQL.
Размер пула (pool_size)
Размер пула (параметр pool_size) — это максимальное число соединений между пулером соединений и каждой базой данных PostgreSQL на каждой из нод кластера.
Размер пула можно выбрать при создании кластера и изменить размер в созданном кластере. Доступные значения — от 1 до 500.
Режимы пулинга
Режим пулинга — это стратегия соединения клиента с PostgreSQL. В кластерах облачных баз данных PostgreSQL используется пулер соединений PgBouncer. Подробнее о пулере соединений в документации PgBouncer.
PgBouncer поддерживает три режима:
По умолчанию в облачных базах данных используется режим транз акции (transaction).
Режим пулинга можно выбрать при создании кластера и изменить режим в созданном кластере.
Режим транзакции (transaction)
Соединение с PostgreSQL поддерживается до тех пор, пока не завершится транзакция. Когда транзакция завершается, пулер возвращает соединение в пул. Позже это соединение может повторно использоваться этим же клиентом для других подключений или другим клиентом.