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 velocidad mediante el ingressConnectionEstablishmentRateLimiterEnabled Parámetro en MongoDB. El limitador de velocidad ayuda a proteger su implementación de tormentas de conexiones que pueden afectar la estabilidad y el rendimiento del sistema.

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

  • Tiene privilegios administrativos en su implementación de MongoDB

  • Comprende los patrones y requisitos de carga de conexión de su sistema

  • Conoces la configuración connectTimeoutMS de tu controlador

1

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

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

Establezca en la velocidad máxima que su clúster puede gestionar sin afectar negativamente el rendimiento. Este debe ser un número fijo que no varíe según la dinámica de otras cargas de ingressConnectionEstablishmentRatePerSec trabajo.

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

Establezca según la siguiente ingressConnectionEstablishmentMaxQueueDepth 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 hello+auth tienen éxito, en lugar de fallar debido a un error de tiempo de espera.

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

Importante

Al ajustar el tamaño de la cola, priorice una cola más larga en lugar de una más corta. Los controladores que vacían sus grupos de conexiones debido al cierre de las conexiones representan un mayor riesgo que las conexiones que permanecen en la cola demasiado tiempo y agotan el tiempo de espera.

4

Si observa fallos de conexión, reduzca los maxPoolSize valores y del controlador. Si reduce estos valores, el controlador reutiliza las conexiones, en lugar de abrir más conexiones al servidor durante periodos de mayor latencia, lo que puede provocar tormentas de conexiones.maxConnecting

Nota

Si reduce maxPoolSize y maxConnecting, las consultas podrían pasar más tiempo en la capa del controlador esperando que se devuelva una conexión al grupo. Reducir estos valores ayuda a mantener la disponibilidad, a costa de una mayor latencia durante picos de carga.

Supervise las siguientes métricas para asegurarse de configurar correctamente su limitador de velocidad:

Si observa un número creciente de conexiones rechazadas, considere lo siguiente:

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

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

  3. Revisando la configuración del grupo de conexiones del controlador.

Volver

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

En esta página