Pool de conexões
Por que abrir uma conexão por pedido não escala e como dimensionar o pool.
Um pool de conexões é um conjunto de conexões com o banco, abertas uma vez e reaproveitadas pelos pedidos da aplicação. Cada pedido pega uma conexão emprestada e a devolve ao terminar.
Abrir uma conexão custa caro, e o banco aceita um número limitado delas. O tamanho do pool decide se a aplicação aproveita o banco ou o sufoca.
- Abrir uma conexão nova custa milissegundos; reaproveitar, microssegundos.
- Mais conexões ativas que núcleos do banco aumentam a latência sem ganhar vazão.
- A soma dos pools de todas as instâncias precisa caber no limite do banco.
- Um intermediário como o PgBouncer junta muitos clientes em poucas conexões.
- Esperar por uma conexão precisa de um tempo limite.