← Volver al Blog
PostgreSQL1 min18 abr 2024

Pool de conexiones: por qué más conexiones pueden hacer tu API más lenta

Cómo reconocer la saturación de PostgreSQL y diseñar una prueba para dimensionar el pool de conexiones.

La intuición equivocada#

Si una conexión ejecuta trabajo, cien conexiones deberían ejecutar cien veces más. En una base de datos el paralelismo compite por CPU, memoria, locks y almacenamiento. Después de cierto punto, cada conexión adicional aumenta la espera.

Diseñar el experimento#

Ejecuta la misma carga con tamaños de pool crecientes y registra throughput, latencia y utilización del servidor.

pool: 5, 10, 20, 40, 80
clients: 200
duration: 5 minutes

Señales de saturación#

  • El throughput deja de crecer.
  • La latencia p95 aumenta rápidamente.
  • CPU o I/O permanecen cerca del límite.
  • Crecen los tiempos de espera por locks.

Configurar con margen#

El valor correcto suele estar antes del pico absoluto. Deja capacidad para migraciones, tareas internas y variaciones de tráfico. Si existen muchas instancias de aplicación, calcula el total de conexiones, no solamente el pool de una instancia.

Conclusión#

El pool protege la base de datos y aplica backpressure. Su objetivo no es abrir tantas conexiones como sea posible, sino mantener el sistema en una zona eficiente y predecible.