Часть 2 — параметры пула
В прошлой части рассказали как UI Temporal "падал" из-за переполненного пула соединений в pgbouncer.
Теперь разберем как держать пул под контролем.
Три главных параметра:
📍
max_client_conn Максимальное количество клиентских соединений, которые PgBouncer может принять от приложения. Если это значение превышено, новые подключения отклоняются.
Пример:
max_client_conn = 100 позволяет до 100 одновременных клиентов.📍
default_pool_size Размер пула соединений для каждой базы данных (по умолчанию). Это число реальных подключений к PostgreSQL.
Пример:
default_pool_size = 50 значит, что PgBouncer держит до 50 открытых соединений к базе.📍
reserve_pool_sizeРезервный пул, который PgBouncer использует, если основной пул (
default_pool_size) исчерпан. Новые клиенты могут временно занять место из резерва.Пример:
reserve_pool_size = 10 , добавляет 10 "аварийных" соединений.Как это работает в аналогии:
—
max_client_conn — общая вместимость автовокзала (всех ждущих пассажиров)—
default_pool_size — число регулярных автобусов на каждый маршрут (БД + пользователь)—
reserve_pool_size — дополнительные автобусы, которые подойдут при ажиотаже⏳ Как проверить состояние пула
Подключаемся к pgbouncer и выполняем
SHOW POOLS;
Вывод будет примерно следующим
database | cl_active | cl_waiting | ...
---------+-----------+------------+------
temporal | 45 | 10 | ...
-
cl_active — активные запросы-
cl_waiting — запросы, ожидающие соединенияЕсли постоянно высокий
cl_active → возможно, нужно поднять default_pool_sizeВ следующей части разберем как мониторить pgbouncer.
#заметкиИнженера
