ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Menu Docs

Mitigue problemas de desempenho com um conjunto de réplicas PSA autogerenciado

Em um conjunto de réplicas de três nós com uma arquitetura PSA (primary-secondary-arbiter) ou um cluster fragmentado com shards PSA de três nós, um nó com dados inativo ou atrasados pode levar a problemas de desempenho.

Se um nó portador de dados ficar inativo, o outro nó se tornará o primário. Escreve comw:1continua a ter sucesso nesse estado , mas escreve com write concern "majority" não pode ter êxito e o ponto de confirmação começa a atrasar. Se o conjunto de réplicas PSA contiver um secundário com atraso e o conjunto de réplicas exigir dois nós para confirmar uma alteração, o ponto de confirmação também ficará atrasado.

Com um ponto de confirmação atrasado, duas coisas podem afetar o desempenho do cluster:

  • O mecanismo de armazenamento mantém todas as alterações que ocorrem após o ponto de confirmação no disco para manter um histórico durable. A E/S extra desses escritos tende a aumentar ao longo do tempo. Isso pode impactar bastante o desempenho de gravação e aumentar a pressão do cache.

  • O MongoDB permite que o oplog ultrapasse seu limite de tamanho configurado para evitar a exclusão do majority commit point.

Para reduzir a pressão de cache e aumentar o tráfego de gravação, configure votes: 0 e priority: 0 para o nó que não está disponível ou está atrasado. Para operações de gravação emitidas com "maioria", somente os nós votantes são considerados para determinar o número de nós necessários para realizar um commit por maioria. Definir a configuração do nó como votes: 0 reduz o número de nós necessários para fazer commit de uma gravação com write concern "majority" de dois para um e permite que essas gravações sejam bem-sucedidas.

Depois que o secundário for recuperado, você poderá usar o método rs.reconfigForPSASet() para definir votes de volta para 1.

Observação

Em versões anteriores do MongoDB, enableMajorityReadConcern e --enableMajorityReadConcern foram configuráveis permitindo a você desabilitar a preocupação de leitura padrão "majority" que teve um efeito semelhante.

Para reduzir a pressão do cache e aumentar o tráfego de gravação para uma implantação com uma arquitetura primary-secondary-arbiter (PSA) de três nós, defina { votes: 0, priority: 0 } para o secundário que está indisponível ou atrasado:

cfg = rs.conf();
cfg["members"][<array_index>]["votes"] = 0;
cfg["members"][<array_index>]["priority"] = 0;
rs.reconfig(cfg);

Se você quiser alterar a configuração do secundário posteriormente, use o método rs.reconfigForPSASet().