Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/

Configura el limitador de velocidad de establecimiento de conexiones de entrada

Este procedimiento describe cómo configurar la limitación de tasa usando el ingressConnectionEstablishmentRateLimiterEnabled parámetro en MongoDB. El limitador de velocidad ayuda a proteger su implementación contra tormentas de conexiones que pueden afectar la estabilidad y el rendimiento del sistema.

Antes de iniciar este procedimiento, asegúrese de cumplir con los siguientes requisitos:

  • Tiene privilegios administrativos en tu implementación de MongoDB.

  • Comprendes los patrones de carga de conexión y los requisitos de tu sistema

  • Conoces la configuración connectTimeoutMS de tu driver

1

Para comenzar a utilizar el limitador de tasa, primero habilítelo configurando el parámetro ingressConnectionEstablishmentRateLimiterEnabled en true:

db.adminCommand( {
setParameter: 1,
ingressConnectionEstablishmentRateLimiterEnabled: true
} )
2

Configura ingressConnectionEstablishmentRatePerSec en la velocidad máxima que tu clúster pueda gestionar sin impactar negativamente el rendimiento. Esto debe ser un número fijo que no varíe en función de otras dinámicas de carga de trabajo.

db.adminCommand( {
setParameter: 1,
ingressConnectionEstablishmentRatePerSec: 20
} )
3

Establezca ingressConnectionEstablishmentMaxQueueDepth de acuerdo con la siguiente fórmula:

maxQueueDepth < (establishmentRatePerSec / 1000) * (connectTimeoutMs - ((averageTimeToCompletedHelloMicros-averageTimeQueuedMicros)*1000))

Esta fórmula garantiza que:

  • Los nuevos intentos de conexión no permanecen en la cola más allá del momento en que el controlador los ha abandonado.

  • La mayoría de los intentos de hello+auth tienen éxito, en lugar de fallar debido a un error de tiempo de espera.

La métrica averageTimeQueuedMicros puede ayudar a ajustar ingressConnectionEstablishmentMaxQueueDepth, ya que equivale aproximadamente a (maxQueueDepth / establishRatePerSec) * 1e6.

Importante

Al ajustar el tamaño de la cola, prioriza un tamaño de cola más largo en lugar de un tamaño de cola más corto. Los drivers que borran sus pool de conexiones debido a conexiones cerradas representan un riesgo mayor que dejar las conexiones en la cola durante demasiado tiempo y expirar el tiempo de espera.

4

Si observa fallos de conexión, disminuya la maxPoolSize configuración y las maxConnecting configuración de su controlador. Si bajas estos valores, el driver reutiliza conexiones en vez de abrir más conexiones al servidor durante periodos de alta latencia, lo que puede causar problemas de tormenta de conexiones.

Nota

Si se reduce maxPoolSize y maxConnecting, es posible que las consultas pasen más tiempo en la capa del controlador esperando que se devuelva una conexión al pool. Reducir estos parámetros contribuye a mantener la disponibilidad a costo de un aumento en la latencia durante picos de carga.

Supervise las siguientes métricas para garantizar que configure correctamente su limitador de velocidad:

Si observas un aumento de conexiones rechazadas, considera:

  1. Aumentar ingressConnectionEstablishmentRatePerSec si el clúster parece tener suficientes recursos de CPU para gestionar esta carga.

  2. Ajustando ingressConnectionEstablishmentMaxQueueDepth según la fórmula.

  3. Revisando la configuración del pool de conexiones del driver.

Volver

Gestionar la salud del clúster particionado con los gestores de verificaciones de estado

En esta página