Как рассчитать max_connections для PostgreSQL и default_pool_size для pgbouncer?

Как рассчитать max_connections для PostgreSQL и default_pool_size для pgbouncer?

Есть ли правило или что-то, что я могу использовать для вычисления хорошего числа для 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 с большим количеством клиентов.

Связанный контент