В чем разница между размером пула соединений библиотеки ORM / построителя запросов и размером пула соединений pgbouncer? - PullRequest
0 голосов
/ 05 августа 2020

Меня смущает конфигурация размера пула pgbouncer и ORM (например, sequelize. js), построитель запросов (например, knex. js), конфигурация размера пула библиотеки. Архитектура выглядит так:

Код приложения => pgbouncer => postgresql

pgbouncer.ini:

;; ...
;; Default pool size.  20 is good number when transaction pooling
;; is in use, in session pooling it needs to be the number of
;; max clients you want to handle at any moment
;default_pool_size = 20
;; ...

конфигурация пула соединений sequelize:

const sequelize = new Sequelize(/* ... */, {
  // ...
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

knex. js конфигурация пула соединений:

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  },
  pool: { min: 0, max: 7 }
});

Что произойдет, если я использую sequelize. js конфигурацию пула соединений и конфигурацию размера пула соединений pgbouncer вместе? Какую конфигурацию использует сервер базы данных? Стоит ли использовать только один из них? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Если у вас есть, например, 3 прикладных процесса, запускающих knex или sequelize, то вам следует настроить pgbouncer poolize в 3 раза больше, чем у одного пула knex / sequelize.

Затем вам также необходимо убедиться, что postgres сервер также имеет достаточно подключений, настроенных для обработки подключений pgbouncer.

Хотя, как сказал @jjanes. Нет причин использовать pgbouncer с knex / sequelize, потому что они уже обеспечивают объединение. Я полагаю, что pgbouncer предназначен для использования с фреймворками, которые не поддерживают пул. Например, если PHP или cgi stript повторно инициализируется при каждой загрузке страницы и обращается к базе данных.

0 голосов
/ 06 августа 2020

Редко имеет смысл объединять пулы последовательного подключения. Так что использовать pgbouncer помимо встроенных, наверное, нет никакого смысла. Сервер базы данных не знает о ваших пулах соединений, за исключением случаев, когда менеджер пула отправляет свои собственные явные команды в базу данных, и у него есть собственный файл конфигурации, который он использует (postgresql .conf).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...