문서 메뉴

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

읽기 설정 maxStalenessSeconds

복제본 세트 멤버는 네트워크 혼잡, 낮은 디스크 처리량, 장시간 실행되는 작업 등으로 인해 프라이머리보다 뒤처질 수 있습니다. 읽기 설정 maxStalenessSeconds 옵션을 사용하면 세컨더리에서 읽을 때 최대 복제 지연 또는 "비활성(staleness)"을 지정할 수 있습니다. 세컨더리의 예상 비활성 상태가 maxStalenessSeconds를 초과하면 클라이언트는 이를 읽기 작업에 사용하는 것을 중단합니다.

중요

maxStalenessSeconds 읽기 설정 옵션은 세컨더리에서 읽기 작업을 수행하면서 프라이머리 쓰기 복제에서 지나치게 뒤쳐진 세컨더리에서 데이터를 읽지 않으려는 애플리케이션을 위한 것입니다. 예를 들어 세컨더리와 프라이머리 간의 네트워크 중단으로 인해 세컨더리가 복제를 중지할 수 있습니다. 이 경우 클라이언트는 관리자가 중단을 해결하고 세컨더리가 이를 따라잡을 때까지 세컨더리에서 읽기를 중단해야 합니다.

maxStalenessSeconds를 사용하려면 해당 배포서버의 모든 MongoDB 인스턴스가 MongoDB 3.4 이상을 사용 중이어야 합니다. 이전 버전의 MongoDB를 사용하는 인스턴스가 있는 경우 드라이버 또는 mongos에서 오류가 발생합니다.

참고

버전 4.2부터 MongoDB는 majority committed 지연을 지정된 최대값 이하로 유지하는 것을 목표로 프라이머리가 쓰기를 적용하는 속도를 제어하는 흐름 제어 메커니즘을 도입했습니다.

다음 읽기 설정 모드로 maxStalenessSeconds를 지정할 수 있습니다.

최대 비활성 상태는 모드 primary와 호환되지 않으며 읽기 작업을 위해 세트의 세컨더리 멤버를 선택할 때만 적용됩니다.

maxStalenessSeconds가 포함된 읽기 작업에 사용할 서버를 선택할 때 클라이언트는 세컨더리의 마지막 쓰기와 프라이머리의 마지막 쓰기를 비교하여 각 세컨더리의 오래된 상태를 추정합니다. 그런 다음 클라이언트는 예상 지연이 maxStalenessSeconds 이하인 세컨더리에 읽기 작업을 지시합니다.

프라이머리가 없으면 클라이언트는 비교를 위해 가장 최근에 쓴 세컨더리를 사용합니다.

기본적으로 최대 부실도는 없으며 클라이언트는 읽기 작업을 지시할 위치를 선택할 때 보조 서버의 지연을 고려하지 않습니다.

maxStalenessSeconds 값을 90초 이상으로 지정해야 합니다. 더 작은 maxStalenessSeconds 값을 지정하면 오류가 발생합니다. 클라이언트는 각 복제본 세트 멤버의 최근 쓰기 날짜를 정기적으로 확인하여 세컨더리의 비활성 상태를 추정합니다. 이러한 점검은 자주 이루어지지 않기 때문에 부실 추정치는 대략적인 수치입니다. 따라서 클라이언트는 90초 미만의 maxStalenessSeconds 값을 적용할 수 없습니다.

← 읽기 설정 태그 세트 목록