문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

PSA 복제 세트의 성능 문제 완화

이 페이지의 내용

  • 개요
  • 절차

프라이머리-세컨더리-중재자(PSA) 아키텍처를 가진 3 노드 복제본 세트 또는 3 노드 PSA 샤드가 있는 샤드 클러스터에서 작동이 중단되거나 지연되는 데이터 보유 노드는 성능 문제를 일으킬 수 있습니다.

하나의 데이터 보유 노드가 다운되면 다른 노드가 프라이머리가 됩니다. w:1을 사용한 쓰기는 이 상태에서 계속 성공하지만 쓰기 고려 "majority"가 있는 쓰기는 성공할 수 없고 커밋 지점이 지연되기 시작합니다. PSA 복제본 세트에 지연된 가 세컨더리포함되어 있고 복제본 세트에서 변경 사항을 과반수 커밋하는 데 두 개의 노드가 필요한 경우 커밋 지점도 지연됩니다.

커밋 지점이 지연되면 두 가지가 클러스터 성능에 영향을 줄 수 있습니다.

  • 스토리지 엔진은 커밋 시점 이후에 발생하는 모든 변경 사항을 디스크에 보관하여 지속형 기록을 유지합니다. 이러한 쓰기로 인한 추가 I/O는 시간이 지남에 따라 증가하는 경향이 있습니다. 이는 쓰기 성능에 큰 영향을 미치고 캐시 압력을 증가시킬 수 있습니다.

  • MongoDB는 majority commit point가 삭제되는 것을 방지하기 위해 oplog를 구성된 크기 제한보다 늘릴 수 있습니다.

캐시 압박과 쓰기 트래픽 증가를 줄이려면 사용할 수 없거나 지연되는 노드에 대해 votes: 0priority: 0을 설정합니다. "majority"로 발행된 쓰기 작업의 경우, 과반수 커밋을 수행하는 데 필요한 노드 수를 결정할 때 투표하는 멤버만 고려됩니다. 노드 구성을 votes: 0으로 설정하면 쓰기 고려 "majority"가 있는 쓰기를 커밋하는 데 필요한 노드 수가 2개에서 1개로 줄어들고 이러한 쓰기가 성공할 수 있습니다.

세컨더리가 따라잡히면 rs.reconfigForPSASet() 메서드를 사용하여 votes1로 다시 설정할 수 있습니다.

참고

이전 버전의 MongoDB에서는enableMajorityReadConcern--enableMajorityReadConcern을 구성하여 기본 읽기 고려 "majority"를 비활성화할 수 있었는데, 이는 비슷한 효과를 가져왔습니다.

3노드 PSA(프라이머리-세컨더리-중재자) 아키텍처를 사용하는 배포에서 캐시 압박을 줄이고 쓰기 트래픽을 늘리려면 사용할 수 없거나 지연 중인 세컨더리에 { votes: 0, priority: 0 }을 설정하세요.

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

나중에 rs.reconfigForPSASet() 메서드를 사용해 세컨더리의 구성을 변경할 수 있습니다.

← PSA 복제본 세트를 안전하게 수정하기

이 페이지의 내용