Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ /

Configurar o limitador de taxa de estabelecimento de conexão de entrada

Este procedimento descreve como configurar o limite de taxa utilizando o parâmetro ingressConnectionEstablishmentRateLimiterEnabled no MongoDB. O limitador de taxa ajuda a proteger seu sistema contra tempestades de conexão que podem impacto a estabilidade e o desempenho do sistema.

Antes de iniciar este procedimento, certifique-se de atender aos seguintes requisitos:

  • Você tem privilégios administrativos em seu sistema do MongoDB

  • Você entende os padrões e requisitos de carga de conexão do seu sistema

  • Você conhece a configuração connectTimeoutMS do seu motorista

1

Para começar a usar o limitador de taxa, primeiro habilite-o configurando o parâmetro ingressConnectionEstablishmentRateLimiterEnabled para true:

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

Defina ingressConnectionEstablishmentRatePerSec para a taxa máxima que seu cluster pode manipular sem afetar negativamente a taxa de transferência. Deve ser um número fixo que não varia com base em outras dinâmicas de volume de trabalho.

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

Defina ingressConnectionEstablishmentMaxQueueDepth de acordo com a seguinte fórmula:

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

Esta fórmula garante que:

  • Novas tentativas de conexão não permanecem na fila após o momento em que o driver as abandona.

  • A maioria das tentativas de hello+auth é bem-sucedida, em vez de falhar devido a um erro de tempo limite.

A métrica averageTimeQueuedMicros pode ajudar a ajustar ingressConnectionEstablishmentMaxQueueDepth, pois ela é igual a aproximadamente (maxQueueDepth / establishRatePerSec) * 1e6.

Importante

Ao ajustar o tamanho da fila, priorize um tamanho de fila mais longo, em vez de um tamanho de fila mais curto. Os drivers que limpam seus pools de conexões devido ao fechamento de conexões são um risco maior do que as conexões que permanecem na fila por muito tempo e atingem o tempo limite.

4

Se você observar falhas de conexão, diminua as configurações maxPoolSize e maxConnecting do driver. Se você diminuir essas configurações, o driver reutilizará conexões, em vez de abrir mais conexões para o servidor durante períodos de maior latência, o que pode causar tempestades de conexão.

Observação

Se você diminuir maxPoolSize e maxConnecting, as queries poderão passar mais tempo na camada do driver aguardando que uma conexão seja retornada ao pool. Diminuir essas configurações ajuda a manter a disponibilidade ao custo de maior latência durante picos de carga.

Monitore as seguintes métricas para garantir que você configure corretamente seu limitador de taxa:

Se você observar um número crescente de conexões rejeitadas, considere:

  1. Aumente ingressConnectionEstablishmentRatePerSec se o cluster parecer ter recursos suficientes de CPU para lidar com essa carga.

  2. Ajustando ingressConnectionEstablishmentMaxQueueDepth com base na fórmula.

  3. Revise as configurações do pool de conexões do driver.

Nesta página