Overview
En un conjunto de réplicas de tres miembros con una arquitectura de árbitro primario-secundario (PSA) o un clúster fragmentado con fragmentos PSA de tres miembros, un nodo portador de datos que esté inactivo o retrasado puede generar problemas de rendimiento.
Si un nodo que transporta datos falla, el otro nodo se convierte en el principal. Escribe con w:1continúa funcionando correctamente en este estado, pero las escrituras con el problema "majority" no pueden realizarse y el punto de confirmación empieza a retrasarse. Si su conjunto de réplicas PSA contiene una réplica secundaria retrasada y requiere dos nodos para confirmar un cambio por mayoría, su punto de confirmación también se retrasa.
Con un punto de confirmación retrasado, dos cosas pueden afectar el rendimiento de su clúster:
El motor de almacenamiento guarda en disco todos los cambios posteriores al punto de confirmación para conservar un historial duradero. La E/S adicional derivada de estas escrituras tiende a aumentar con el tiempo. Esto puede afectar considerablemente el rendimiento de escritura y aumentar la presión de la caché.
MongoDB permite que el oplog crezca más allá de su límite de tamaño configurado para evitar
majority commit pointeliminar.
Para reducir la presión de caché y el aumento del tráfico de escritura, configure votes: 0 y para el nodo no disponible o con retraso. En las operaciones de escritura emitidas con "mayoría", solo se consideran los priority: 0 votes: 0 miembros con derecho a voto para determinar el número de nodos necesarios para realizar una confirmación mayoritaria. Configurar el nodo "majority" en reduce el número de nodos necesarios para confirmar una escritura con el problema de dos a uno y permite que estas escrituras se realicen correctamente.
Una vez que se alcanza el secundario, puedes usar el métodors.reconfigForPSASet()para establecervotesnuevamente en 1.
Nota
En versiones anteriores de MongoDB, enableMajorityReadConcern y eran configurables,--enableMajorityReadConcern lo que permitía deshabilitar la preocupación de lectura predeterminada,"majority" que tenía un efecto similar.
Procedimiento
Para reducir la presión de caché y aumentar el tráfico de escritura para una implementación con una arquitectura de árbitro primario-secundario (PSA) de tres miembros, configure { votes: 0, priority: 0 } para el secundario que no está disponible o está retrasado:
cfg = rs.conf(); cfg["members"][<array_index>]["votes"] = 0; cfg["members"][<array_index>]["priority"] = 0; rs.reconfig(cfg);
Si desea cambiar la configuración del secundario más tarde, utilice el rs.reconfigForPSASet() método.