Explica cómo los drivers gestionan pools de conexiones, selección de servidor, timeouts y reutilización para evitar latencia y saturación en aplicaciones.
mantiene conocimiento de la topología y pools de conexiones hacia los miembros elegibles. Debe reutilizarse durante la vida del proceso. Crear y cerrar un cliente por request añade DNS, TLS, autenticación, sockets y presión sobre el servidor.
MongoClient
Texto
proceso Node.js
→ un MongoClient reutilizado
→ pool por servidor/topología
→ operaciones concurrentes
Un pool grande no hace más rápida una query; solo permite más operaciones simultáneas hasta que otra capa se satura.
El driver descubre primary, secondaries y cambios de estado. La URI debe incluir seed list, replica set o SRV correcto. El cliente actualiza routing después de elections.
No caches manualmente “el primary actual”. La topología cambia.
Mantiene conexiones preparadas. Puede reducir cold-start, pero consume recursos incluso sin tráfico y amplifica despliegues. Úsalo solo después de medir.
Cuando todas las conexiones están ocupadas, una operación espera checkout. Si el timeout vence, el error puede aparecer aunque MongoDB ejecute queries rápidas.
Mide por separado:
checkout duration;
wait queue size;
operation duration;
server selection.
Aumentar el pool no corrige operaciones que retienen conexiones demasiado tiempo.
Coordina estos valores con el timeout HTTP y cancellation. El presupuesto externo no debe vencer mucho antes mientras la operación sigue consumiendo recursos.
Cada instancia warm puede reutilizar un cliente global. El problema es crear uno por invocation o desplegar tantas instancias que la suma de pools exceda capacidad.
Usa caching compatible con el runtime, limita autoscaling y observa conexiones. No serialices sessions entre instancias.
En desarrollo, frameworks pueden reevaluar módulos. Conserva una promesa/client global en modo dev para evitar pools duplicados. En producción usa inicialización normal.
El driver mantiene conexiones a miembros según topología. Leer de secondaries no crea una capacidad gratis; cada replica necesita recursos y puede aumentar lag. Configura read preference por caso de uso.
El pool administra concurrencia, no velocidad individual. Reutiliza un MongoClient, dimensiona capacidad a nivel de todo el fleet, coordina timeouts y limita operaciones concurrentes. Pool wait, server selection y query execution son latencias distintas y deben medirse por separado.