Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Mitigue problemas de desempenho com o conjunto de réplicas PSA

Nesta página

  • Visão geral
  • Procedimento

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ó com dados cair, o outro nó se tornará o primary. As gravações com w:1 continuam a ser bem-sucedidas nesse estado, mas as gravações com write concern "majority" não podem ser bem-sucedidas e o ponto de commit começa a atrasar. Se o conjunto de réplicas PSA contiver um secundário atrasado e exigir dois nós para fazer commit de uma alteração por maioria, seu ponto de commit 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().

← Modificar o conjunto de réplicas PSA com segurança