Conexão demais derruba banco bom
PostgreSQL é robusto, mas cada conexão consome memória e recursos. Aplicações web com muitos workers, picos de acesso ou funções serverless podem abrir conexões demais e degradar o banco. PgBouncer resolve esse problema atuando como pool de conexões leve entre aplicação e PostgreSQL.
Em uma VPS ou dedicado, PgBouncer permite que muitas requisições compartilhem um conjunto menor de conexões reais com o banco. Isso melhora previsibilidade e reduz risco de esgotar max_connections.
Modos de pool
No modo session, a conexão fica presa ao cliente durante toda a sessão. No modo transaction, a conexão é devolvida ao pool ao fim de cada transação, aumentando eficiência. O modo transaction é comum em aplicações web, mas pode exigir ajustes se a aplicação usa recursos dependentes de sessão.
Quando usar
- Muitos workers de aplicação.
- Erros de conexões máximas no PostgreSQL.
- Picos curtos de tráfego.
- Aplicações com conexões ociosas.
- Banco com memória limitada.
Monitoramento
Acompanhe conexões ativas, esperando, pool por database e latência. Pool pequeno demais cria fila; grande demais volta a pressionar o banco. Ajuste com base em métricas reais.
Cuidados
Prepared statements, transações longas e configurações por sessão precisam de atenção. Teste em staging antes de ativar em produção. A documentação oficial do PgBouncer detalha comandos e parâmetros.
Conclusão
PgBouncer é uma solução simples para um problema comum: excesso de conexões. Com pool bem dimensionado, PostgreSQL fica mais estável e a aplicação suporta mais tráfego sem aumentar recursos imediatamente.
Nenhum comentário ainda. Seja o primeiro a comentar!