Estoy confundido acerca de la configuración del tamaño del grupo de pgbouncer y ORM (como sequelize.js ), configuración del tamaño del grupo de la biblioteca del generador de consultas (como knex.js ). La arquitectura así:
Código de aplicación => 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 ;; ...Secuela de la configuración del grupo de conexiones:
const sequelize = new Sequelize(/* ... */, { // ... pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } });Configuración del grupo de conexiones 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 } });¿Qué sucede si uso la configuración del grupo de conexiones sequelize.js y la configuración del tamaño del grupo de conexiones pgbouncer juntas? ¿Qué configuración utiliza el servidor de la base de datos? ¿Debo usar solo uno de ellos? Gracias.
Rara vez tiene sentido conectar grupos de conexiones en cadena tipo margarita. Por lo tanto, probablemente no tenga sentido usar pgbouncer además de los incorporados. El servidor de la base de datos no conoce sus agrupadores de conexión, excepto en la medida en que el administrador del grupo envía sus propios comandos explícitos a la base de datos y tiene su propio archivo de configuración que utiliza (postgresql.conf).
Si tiene, por ejemplo, 3 procesos de aplicación que ejecutan knex o sequelize, entonces debe configurar el tamaño del grupo de pgbouncer para que sea 3 veces más grande que los usos individuales del grupo de knex/sequelize.
Luego, también debe asegurarse de que el servidor de Postgres también tenga suficientes conexiones configuradas para manejar las conexiones de pgbouncer.
Aunque como dijo @jjanes. No hay razón para usar pgbouncer con knex/sequelize, porque ya brindan agrupación. Supongo que pgbouncer está destinado a usarse con marcos, que no admiten la agrupación. Por ejemplo, si PHP o cgi stript se reinicia en cada carga de página y realiza llamadas a la base de datos.