Cómo usarla
- Introduce los núcleos de CPU del servidor de base de datos (físicos, sin hyper-threading) y el número de discos con los datos.
- Introduce cuántas instancias de la aplicación (pods, procesos) usan la base de datos.
- Introduce el ritmo total de consultas y el tiempo medio que una consulta mantiene su conexión, con los viajes de red y el tiempo dentro de la transacción.
Fórmulas
- Pool total = núcleos × 2 + discos efectivos
- Por instancia = ceil(pool total ÷ instancias)
- Conexiones ocupadas (ley de Little) = consultas por segundo × tiempo de consulta en segundos
- Uso = ocupadas ÷ pool total
Ejemplo resuelto
Una base de datos con 8 núcleos y 1 disco, usada por 2 instancias a 400 consultas por segundo de 15 ms:
- Pool total: 8 × 2 + 1 = 17.
- Por instancia: ceil(17 ÷ 2) = 9.
- Ocupadas: 400 × 0,015 = 6 conexiones; uso 6 ÷ 17 = 35,3 %.
Consejos
- Por encima del 100 % las consultas hacen cola. Antes de añadir conexiones, acelera las consultas o acorta el tiempo que las transacciones retienen la conexión.
- Cuenta todos los clientes. Workers en segundo plano, tareas cron y herramientas de administración gastan el mismo límite de la base de datos (max_connections en PostgreSQL).
- Mantén el pool fijo. Si el mínimo de conexiones inactivas es igual al máximo, no habrá picos de latencia cuando el pool tenga que abrir conexiones nuevas bajo carga.