AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

쿼리 부하 차단 및 쿼리 거부

MongoDB Search 프로세스 (mongot)는 고정된 실행 풀에서 쿼리를 실행합니다. 쿼리가 프로세스 실행 수 있는 속도보다 빠르게 도착하면 Atlas 초과 쿼리를 한 번에 모두 실행 하지 않고 허용 제어 대기열에 보관합니다. 검색 로드 차단이 이 대기열을 관리합니다. 검색 프로세스 메모리 고갈과 프로세스 완료할 수 있는 것보다 더 많은 동시 작업을 허용할 때 발생하는 지연 시간 축소로부터 보호합니다.

검색 부하 차단은 $search 및 $vectorSearch 쿼리 모두에 적용됩니다. 이 기능은 MongoDB 8.0, 8.3, 9.0 이상을 실행 클러스터에서 사용할 수 있으며, Atlas MongoDB 9을 실행 클러스터에서 기본값 으로 이를 활성화합니다.0 또는 그 이후 버전.

검색 프로세스 실행 용량 에 도달하면 Atlas 수신 쿼리를 대기열에 추가합니다. 대기열에 추가된 쿼리는 용량 확보되면 실행 성공적으로 완료되지만 평소보다 지연 시간 집니다. 지연 시간은 도착 속도가 프로세스 작업을 허용할 수 있는 속도 아래로 떨어질 때까지 높은 상태로 유지됩니다.

쿼리 언제든지 실행 풀에서 실행 거나 허용 제어 대기열에서 대기 중이거나 거부 중입니다. 대기열이 가득 찬 경우에만 거부가 발생합니다.

검색 부하 차단은 검색 프로세스 동시에 실행하는 쿼리 수를 변경하지 않습니다. 허용 제어 대기열에 용량 제한이 있는지 여부만 변경됩니다.

  • 제한 없는 대기열을 사용하면 Atlas 모든 초과 쿼리 대기열에 추가합니다. 쿼리는 항상 실행 과부하가 지속되면 지연 시간 증가합니다.

  • 제한된 대기열을 사용하는 경우 Atlas 여전히 초과 쿼리를 대기열에 추가하지만 용량 제한까지만 대기열에 추가합니다. 대기열이 가득 차면 Atlas 모든 클라이언트 에 대해 지연 시간 추가하는 대신 추가 쿼리를 즉시 거부합니다.

Atlas 실행 풀의 크기와 제한된 대기열의 용량 내부적으로 설정하며, 이러한 제한은 언제든지 변경할 수 있습니다.

Atlas 쿼리를 거부하기 시작할 때는 이미 오버로드로 인해 Atlas 허용하는 쿼리의 지연 시간 증가하고 있는 상태입니다. 거부는 과도한 로드를 분산시켜 지연 시간 더 이상 저하되는 것을 방지합니다. 또한 검색 프로세스 완전히 실패하지 않도록 하는 대신 응답성을 유지합니다.

허용 제어 대기열이 가득 차서 Atlas 쿼리 거부하면 쿼리 실패하고 다음 오류가 발생합니다.

필드
값

오류 코드

489

코드 이름

SearchRequestRejectedDueToOverload

오류 레이블

SystemOverloadedError

검색 부하 차단을 지원하는 모든 버전은 동일한 오류를 반환하므로 애플리케이션 단일 오류 계약에 의존할 수 있습니다.

중요

거부된 쿼리는 다시 시도할 수 없습니다.

489 오류에는 RetryableError 라벨이 없습니다. MongoDB 드라이버와 mongod 모두 거부된 쿼리 자동으로 재시도하지 않습니다. 애플리케이션 에서 응답 방법을 결정해야 합니다.

거부는 검색 프로세스 이미 포화 상태임을 의미합니다. 즉시 재시도하면 처리할 수 없는 프로세스 에 부하가 추가되어 과부하가 확장되고 거부 횟수가 증가합니다. 489 오류에 응답하려면 다음 방법을 적용 .

  • 오류 메시지 텍스트에서 일치하지 않는 SystemOverloadedError 레이블을 확인하세요.

  • 쿼리 다시 보내기 전에 기다립니다. 지터와 함께 지수 백오프를 사용하여 동시 클라이언트가 서로 단계적으로 재시도하지 않도록 합니다.

  • 시도 횟수를 제한합니다. 무기한 재시도하는 대신 최종 사용자에게 저하된 결과나 오류를 제공합니다.

  • 거부가 지속되는 동안 애플리케이션 이 검색 쿼리를 전송하는 속도를 줄이세요. 클라이언트 동시성을 낮추면 과부하가 줄어듭니다.

  • 지속적인 거부를 일시적인 오류가 아닌 용량 신호로 처리하고 검색 워크로드 확장하다 하거나 최적화하세요.

Atlas 대기열이 거부되기 전에 보고하므로 조치를 취할 시간이 주어집니다. 다음 신호를 사용합니다.

  • Search Process Throttling 지표는 검색 프로세스 대기열 임계값을 초과했다는 신호를 보낸 비율을 보고합니다. 0이 아닌 값이 지속된다는 것은 프로세스 허용하는 것보다 작업이 더 빨리 도착한다는 의미입니다. 이 지표를 보려면 MongoDB 검색 지표 검토를 참조하세요.

  • 조건이 5분 동안 지속되면 MongoDB Search: Search Process is Overloaded 경고 발생합니다. 이 경고 해결하려면 MongoDB 검색 문제 해결을 참조하세요.

검색 프로세스 도달하는 로드를 줄이려면 다음 조치를 수행하세요.

  • 검색 노드를 배포하여 검색 워크로드 격리하거나 vCPU가 더 많은 검색 노드 계층 으로 업그레이드 .

  • 쿼리를 갑자기 보내지 말고 시간이 지남에 따라 분산시킵니다.

  • 쿼리를 최적화합니다. 필터를 추가하고, 선행 와일드카드와 깊게 중첩된 절을 줄이고, 필요한 필드만 반환합니다.

클러스터 별로 검색 로드 차단을 구성합니다. 이 설정은 다음 상태를 허용합니다.

상태
API Value
설명

Atlas managed

재정의 없음

Atlas 클러스터 실행하는 MongoDB 버전에 따라 상태 를 선택합니다. Atlas 이 상태 MongoDB 8.0 및 8.3에서는 Off로, MongoDB 9.0 이상에서는 On로 확인합니다.

에

true

허용 제어 대기열이 제한되어 있습니다. Atlas 초과 쿼리를 용량 제한까지 대기열에 추가한 다음, 대기열이 가득 차면 489 오류를 발생시키며 추가 쿼리를 거부합니다.

끄기

false

허용 제어 대기열은 제한되지 않습니다. Atlas 모든 초과 쿼리 대기열에 추가하며 쿼리 거부하지 않습니다.

Atlas UI 또는 Atlas 관리 API 사용하여 상태 를 변경합니다.