Как масштабировать общее количество соединений с балансировкой нагрузки pgpool? - PullRequest
0 голосов
/ 10 января 2019

У меня есть 3 базы данных postgresql (один ведущий и два подчиненных) с pgpool, каждая база данных может обрабатывать 200 подключений, и я хочу получить 600 активных подключений к pgpool.

Моя проблема в том, что если я установил pgpool с 600 дочерними процессами, он может открыть 600-соединение только с одной базой данных (например, с мастером, если все подключения выполняют запрос записи), но с 200 дочерними процессами я использую только + - 70 соединений на каждую базу данных.

Так есть ли способ настроить pgpool на балансировку нагрузки в этом масштабе с номером базы данных?

Спасибо.

1 Ответ

0 голосов
/ 04 апреля 2019

Наличие 600 соединений в каждом дБ не должно быть идеальным решением. Я бы действительно посмотрел в свое приложение, прежде чем устанавливать такое высокое значение соединения.

Масштабируемость распределения нагрузки в pgpool может быть увеличена путем установки равного параметра backend_weight. Таким образом, ни один из SQL-запросов не будет одинаково распределен между узлами postgresql.

Также pgpool управляет пулом соединений с базой данных, используя параметры num_init_children и max_pool.

Параметр num_init_children используется для охвата процесса pgpool, который будет подключаться к каждому бэкэнду PostgreSQL.

Также значение параметра num_init_children - это разрешенное количество одновременных клиентов для соединения с pgpool.

pgpool грубо пытается сделать max_pool * num_init_children нет соединений с каждым бэкэндом postgresql.

...