Temos 2 aplicativos com aproximadamente 10 instâncias de cada. Todas essas instâncias estão conectadas ao mesmo banco de dados Postgres.
Os aplicativos usam um pool de clientes (alguns ORM de aplicativos fornecem um pool de conexões localmente)
Planejamos instalar o PgBouncer (um para todos).
- Este é um bom plano para apresentações?
- Posso remover o pool de conexões do aplicativo ao instalar o PgBouncer?
Definitivamente, é uma boa ideia usar o pool no banco de dados, pois você tem várias instâncias de aplicativos. Todas as 20 instâncias de aplicativos podem ser efetivamente agrupadas em conexões de servidor (DB) de reutilização de banco de dados. Contudo eu sugiro
load balancing
mecanismo (ou ferramentas comoHAproxy
) com duaspgbouncer
instâncias para evitar ponto único de falha. Eles devem estarpeered
juntostransaction pooling
para um pool eficaz se seu aplicativo não usar recursos de nível de sessão.Acho que não há problema em ter um pool de camadas de aplicativos que mantenha as conexões ativas com o pgbouncer.
Você não deve adicionar o pgbouncer, a menos que ajude a resolver algum problema. Outra coisa é configurar, quebrar e adicionar latência. Você não descreveu nenhum problema que o pgbouncer possa resolver.
O aplicativo é o local mais eficiente para fazer pooling. Se ele já existir, você não deve removê-lo só porque também usa o pgbouncer (o que, novamente, você não deve fazer de qualquer maneira). Seria diferente se o pool de aplicativos estivesse causando algum problema, mas você não descreveu nenhum.