읽기 설정 maxStalenessSeconds
복제본 설정하다 멤버는 네트워크 혼잡, 낮은 디스크 처리량 , 장기 실행 작업 등으로 인해 프라이머리 보다 뒤처질 수 있습니다. 읽기 설정 (read preference) maxStalenessSeconds
옵션을 사용하면 세컨더리 에서 읽기에 대한 최대 복제 지연 또는 "비활성(staleness)"을 지정할 수 있습니다. 세컨더리의 예상 비활성 상태가 maxStalenessSeconds
를 초과하면 클라이언트 는 해당 세컨더리를 읽기 작업에 사용하는 것을 중지합니다.
중요
maxStalenessSeconds
읽기 설정 옵션은 세컨더리에서 읽기 작업을 수행하면서 프라이머리 쓰기 복제에서 지나치게 뒤쳐진 세컨더리에서 데이터를 읽지 않으려는 애플리케이션을 위한 것입니다. 예를 들어 세컨더리와 프라이머리 간의 네트워크 장애로 인해 세컨더리가 복제를 중지할 수 있습니다. 이 경우 클라이언트는 관리자가 장애를 해결하고 세컨더리가 이를 따라잡을 때까지 세컨더리에서 읽기를 중단해야 합니다.
참고
흐름 제어 는 majority
committed
지연을 지정된 최대값 아래로 유지하는 것을 목표로 프라이머리 가 쓰기를 적용하는 속도를 제한합니다.
다음 읽기 설정 모드로 maxStalenessSeconds
를 지정할 수 있습니다.
최대 비활성 상태는 모드 primary
와 호환되지 않으며 읽기 작업을 위해 세트의 세컨더리 멤버를 선택할 때만 적용됩니다.
maxStalenessSeconds
가 포함된 읽기 작업에 사용할 서버를 선택할 때 클라이언트는 세컨더리의 마지막 쓰기와 프라이머리의 마지막 쓰기를 비교하여 각 세컨더리의 오래된 상태를 추정합니다. 그런 다음 클라이언트는 예상 지연이 maxStalenessSeconds
이하인 세컨더리에 읽기 작업을 지시합니다.
프라이머리가 없으면 클라이언트는 비교를 위해 가장 최근에 쓴 세컨더리를 사용합니다.
기본적으로 최대 부실도는 없으며 클라이언트는 읽기 작업을 지시할 위치를 선택할 때 보조 서버의 지연을 고려하지 않습니다.
maxStalenessSeconds
값을 90초 이상으로 지정해야 합니다. 더 작은 maxStalenessSeconds
값을 지정하면 오류가 발생합니다. 클라이언트는 각 복제본 세트 멤버의 최근 쓰기 날짜를 정기적으로 확인하여 세컨더리의 비활성 상태를 추정합니다. 이러한 점검은 자주 이루어지지 않기 때문에 부실 추정치는 대략적인 수치입니다. 따라서 클라이언트는 90초 미만의 maxStalenessSeconds
값을 적용할 수 없습니다.