Есть ли правило или что-то, что я могу использовать для вычисления хорошего числа для max_connections
, default_pool_size
и max_client_conn
?
Значения по умолчанию странные. PostgreSQL по умолчанию max_connections=100, а pgboucner по умолчанию default_pool_size=20. Разве default_pool_size не должен быть всегда больше max_connections? Иначе в чем смысл? Я думал, что pgbouncer предназначен для того, чтобы мы могли обрабатывать больше соединений, снижая их накладные расходы (путем повторного использования соединений PostgreSQL). Я в замешательстве.
Я ищу советы, подобные тем, что можно найти вВики PostgreSQL, например «этот параметр должен составлять ~50% вашей памяти».
Я также помню, что была электронная таблица для MySQL, которая позволяла вычислять такие параметры. Было бы здорово иметь что-то подобное для PostgreSQL/pgbouncer.
решение1
default_pool_size всегда должен быть меньше max_client_conn. max_client_connection — это количество соединений сокетов между приложением и pgbuffer. default_pool_size — это количество соединений между pgbuffer и базой данных.
Таким образом, если вы используете транзакцию в качестве режима пула, вы можете поделиться меньшим default_pool_size с большим количеством клиентов.