MongoDB Search는 MongoDB Search 프로세스에서 사용하는 CPU 및 메모리 양이 지정된 임계값에 도달하면 MongoDB Search 경고 를 트리거합니다. 검색 프로세스 (mongot)의 메모리가 부족하면 인덱싱 및 쿼리가 실패합니다. 프로젝트 경고 설정 모달에서 MongoDB Search 경고 조건을 구성할 수 있습니다. 클러스터 모니터링통해 MongoDB Search 지표 볼 수도 있습니다.
경고: 이미 MongoDB Search 인덱스가 있는 컬렉션을 샤딩하면 인덱스가 샤드에서 구축되는 동안 잠시 검색 결과가 불완전할 수 있습니다. 또한 이미 샤딩된 컬렉션에 대한 샤드를 추가하고 MongoDB Search 인덱스가 포함된 경우, 추가된 샤드에서 초기 동기화 프로세스가 완료될 때까지 해당 컬렉션에 대한 검색 쿼리가 불완전한 결과를 반환할 수 있습니다. 자세한 내용은 초기 동기화 프로세스를 참조하세요.
경고 조건
프로젝트 수준 경고 설정 페이지에서 다음과 같은 경고 조건을 구성하여 경고를 트리거할 수 있습니다.
Atlas Search: Index Replication Lag 는 MongoDB Search가 의 oplog 에서 변경 사항을 mongod 복제하는 데 지연된 대략적인 시간이 임계값보다 높거나 낮을 때 발생합니다.
복제 지연 커져서 mongot 이 구성된 oplog window 보다 뒤처지는 경우 mongot 은 더 이상 동기화 할 수 없습니다. 이 경우 mongot 가 자동으로 전체 인덱스 다시 작성을 수행합니다. 다시 작성하는 동안 검색 쿼리는 계속 작동하지만 오래된 결과를 반환합니다.
복제 지연 줄이려면 다음을 수행합니다.
쓰기 (write) 버스트 중에
mongot동기화 에 더 많은 시간을 제공하려면 oplog 크기를 늘리세요. 클러스터 설정에서 최소 oplog 크기를 구성할 수 있습니다.검색 노드를 업스케일하여 복제를 위해
mongot더 많은 CPU 및 메모리를 제공합니다. 검색 노드 추가 또는 확장에 대해 자세히 학습하려면 검색 노드 크기 조정 및 확장을 위한 팁을 참조하세요.가능하면 대규모 대량 작업을 일괄 처리하거나 제한하여 쓰기 (write) 버스트 볼륨을 줄입니다.
복제 지연 과 함께 쓰기 (write) 볼륨을 모니터링합니다. 쓰기 (write) 처리량 의 갑작스러운 급증은 oplog 고갈의 일반적인 trigger 입니다. 쓰기 (write) 볼륨 모니터링 및 문제 해결에 대해 자세히 학습하려면 Oplog 문제 해결을 참조하세요.
권장 임계값: 이 경고 oplog window 기간보다 훨씬 낮게 설정합니다. 예시 를 들어, oplog window 24 시간인 경우 해당 창 의 30~50%(예: 8~12 시간)에서 경고하여 mongot 이(가) 떨어지기 전에 응답할 시간을 확보하는 것이 좋습니다. 오프 oplog.
Atlas Search: Index Size on Disk 디스크에 있는 모든 MongoDB Search 인덱스의 총 크기(바이트)가 임계값보다 높거나 낮을 때 발생합니다.
Atlas Search: Mongot paused initial sync 는 높은 디스크 사용률로 인해 MongoDB 검색 mongot 프로세스에 의해 초기 동기화가 중단된 경우 발생합니다.
초기 동기화 빌드가 실패하면 Atlas는 실패 원인에 따라 다음 조치 중 하나를 취할 수 있습니다.
실패한 인덱스 제거: Atlas가 인덱스를 완전히 제거하면 다시 빌드해야 합니다. 인덱스를 복구할 수 없을 때 발생합니다.
부분 빌드 진행 상태 제거: Atlas는 인덱스 정의를 유지하지만 부분 빌드 진행 상태는 제거하여 빌드가 처음부터 다시 시작될 수 있도록 합니다.
부분 빌드 진행 상태를 유지하고 재사용합니다: Atlas는 부분 빌드 데이터를 디스크에 저장합니다. 이전에 완료된 작업은 빌드가 재개될 때 복구 중에 재사용될 수 있습니다.
부분 빌드 진행 상태 유지하데 처음부터 다시 시작: Atlas는 부분 빌드 데이터를 디스크에 유지하지만 이전 작업을 재사용하지 않고 빌드를 처음부터 다시 시작합니다.
Atlas Search: Mongot is approaching replication stop threshold 검색 노드 의 디스크 사용량이 85% 이상인 경우 발생합니다.
Atlas Search: Max Number of Lucene Docs 기본값 으로 자동으로 실행됩니다. 이 경고 특정 복제본 세트 또는 샤드 에 대한 MongoDB Search 인덱스를 저장 데 사용되는 루센 Docs 의 상한 수가 임계값을 초과하는 경우 발생합니다.
Atlas Search: Mongot stopped replication 기본적으로 자동 실행됩니다.
이 경고 디스크 사용률이 높아 MongoDB Search mongot 프로세스 에 의해 복제 중단된 경우 전용 검색 노드에서만 발생합니다. 디스크 사용률이 90%에 도달하면 복제가 일시 중지되고 디스크 사용률이 85% 아래로 떨어지면 자동으로 다시 시작됩니다.
복제 일시 중지되면 검색 노드는 쿼리를 계속 제공할 수 있지만 복제된 데이터는 부실해질 수 있습니다. 예시 를 들어 mongot 가 이미 실행 경우 동의어 매핑이 로드된 상태로 유지될 수 있지만 최근 업데이트가 반영되지 않을 수 있습니다. 복제 일시 중지된 상태에서 Atlas 새 검색 노드를 프로비저닝하는 경우 새 mongot 프로세스 사용 가능한 동의어 매핑이 없을 수 있습니다.
복제 일시 중지되면 검색 노드를 확장 때 Atlas 인덱스 의 최근 사본을 복제하는 빠른 검색 노드 프로비저닝 지연되거나 방지될 수도 있습니다.
복제 장기간 일시 중지되면 mongot 프로세스 oplog 에서 떨어질 수 있습니다. mongot 가 oplog 에서 떨어지면 Atlas 인덱스 를 다시 작성합니다.
mongot 가 oplog 에서 떨어지지 않도록 하려면 다음을 수행합니다.
검색 노드를 업스케일링하여 디스크 사용률을 줄입니다.
사용하지 않는 MongoDB Search 인덱스를 삭제합니다.
추가 검색 노드를 추가합니다.
클러스터 를 샤딩하여 데이터를 더 잘 분산하고 디스크 압박을 줄입니다.
Atlas Search: Number of Error Queries MongoDB Search가 응답을 반환할 수 없는 쿼리 수가 임계값보다 높거나 낮을 경우 발생합니다.
Atlas Search: Number of Successful Queries MongoDB Search가 성공적으로 응답을 반환한 쿼리 수가 임계값보다 높거나 낮을 경우 발생합니다.
Atlas Search: Total Number of Queries MongoDB Search에 제출된 쿼리 수가 임계값보다 높거나 낮을 때 발생합니다.
Atlas Search Opcounter: Delete 는 초당 제거되는 총 문서 또는 필드 수(인덱스 정의에 지정됨)가 임계값보다 높거나 낮은 경우 발생합니다.
Atlas Search Opcounter: Getmore 는 모든 MongoDB Search 쿼리에서 초당 실행 총 getmore 명령 수가 임계값보다 높거나 낮을 때 발생합니다.
Atlas Search Opcounter: Insert MongoDB Search가 초당 인덱스하는 총 문서 또는 필드 수( 인덱스 정의에 지정됨)가 임계값보다 높거나 낮을 경우 발생합니다.
Atlas Search Opcounter: Update MongoDB Search가 초당 업데이트하는 문서 또는 필드의 총 수( 인덱스 정의에 지정됨)가 임계값보다 높거나 낮을 경우 발생합니다.
Insufficient disk space to support rebuilding search indexes 기본값 으로 자동으로 실행됩니다. 이 경고 클러스터 의 디스크 여유 공간이 MongoDB Search 인덱스를 지원 만큼 부족할 때 발생합니다.
참고
이 경고는 Atlas가 새로운 기능을 활성화하기 위해 검색 인덱스를 자동으로 업그레이드 할 때 나타날 수 있습니다. 클러스터에는 인덱스의 이전 버전과 새 버전 모두에 대한 충분한 디스크 공간이 필요합니다. 재구성으로 디스크 공간 사용량이 90% 이상으로 증가하면 자동 확장을 활성화한 경우 Atlas는 클러스터 저장 용량을 늘립니다. 인덱스 업그레이드가 완료되면 Atlas는 이전 버전의 인덱스를 삭제하여 디스크 공간을 확보합니다.
Search Memory: Resident MongoDB Search 프로세스 가 차지하는 상주 메모리 의 총 바이트가 임계값보다 높거나 낮을 경우 발생합니다.
Search Memory: Shared MongoDB Search 프로세스 가 차지하는 공유 메모리의 총 바이트가 임계값보다 높거나 낮을 경우 발생합니다.
Search Memory: Virtual MongoDB Search 프로세스 가 차지하는 가상 메모리 의 총 바이트가 임계값보다 높거나 낮을 경우 발생합니다.
Search Process: CPU (Kernel) % CPU가 MongoDB Search 프로세스 에 대한 운영 체제 호출을 처리하는 데 소비한 시간 비율이 임계값을 초과하는 경우 발생합니다.
Search Process: CPU (User) % CPU가 MongoDB Search 프로세스 서비스하는 데 소비한 시간 비율이 임계값을 초과하는 경우 발생합니다.
Search Process: Disk space used MongoDB Search 프로세스 에서 사용하는 디스크 공간의 총 바이트가 임계값을 초과하는 경우 발생합니다.
Search Process: Ran out of memory는 기본값으로 자동으로 실행됩니다. 경고 설정을 구성하여 이 알림을 비활성화할 수 있습니다. 이 경고는 검색 프로세스(mongot)의 메모리가 부족할 경우 발생합니다. 검색 프로세스에 메모리가 부족하면 인덱싱 및 쿼리가 실패합니다.
MongoDB Search: Search Process is Overloaded 기본적으로 자동 실행됩니다.
이 경고는 검색 노드의 입장 제어 큐 입개자를 초과하는 검색 쿼리 속도가 0보다 큰 경우 발생합니다. 이 경고가 발생하면 MongoDB Search 프로세스(mongot)가 과부하되어 검색 쿼리가 큐에 추가되고 거부될 수 있습니다. 부하가 감소할 때까지 쿼리가 평소보다 느릴 수 있습니다. 이 조건이 5 분 동안 지속되면 경고가 발생합니다.
제안된 조치:
더 많은 vCPU가 있는 노드 검색 계층으로 업그레이드하세요. 노드 검색을 사용하지 않는 경우 워크로드 격리를 위해 추가합니다.
동시 쿼리를 줄이거나 쿼리를 시간에 걸쳐 실행합니다.
필터링을 구현하고, 선행 와일드카드와 겹칭이 많이 중청된 조건을 줄이고, 필요한 데이터만 검색하여 쿼리를 최적화합니다.
일반적인 트리거
MongoDB Search 경고는 크거나 복잡한 검색 인덱스 빌드 하려고 할 때 자주 발생합니다. 이러한 인덱스는 메모리 문제를 해결할 때까지 Initial Sync 단계에 유지됩니다.
즉각적인 문제 해결
검색 프로세스(mongot)가 메모리나 디스크 공간이 부족한 경우 클러스터를 업그레이드하여 즉각적인 문제를 해결할 수 있습니다. 더 많은 메모리, 스토리지, IOPS가 있는 클러스터 계층을 선택할 수 있습니다.
장기적인 솔루션 구현
향후 MongoDB Search 경고를 방지하려면 MongoDB Search에 대한 MongoDB Search 성능 개선 을 주의 깊게 검토하십시오.
인덱스를 최적화하려면 전용 검색 노드를 배포하는 것이 좋습니다. 이를 통해 Atlas 클러스터와 $search 워크로드를 독립적으로 확장할 수 있습니다. 전용 검색 노드는 mongot 프로세스만 실행하므로 mongot 프로세스의 가용성, 성능 및 워크로드 분산이 향상됩니다.
진행 상황 모니터링
사용 가능한 MongoDB Search 차트 를 확인하여 MongoDB Search 지표 모니터 .
MongoDB Search 지표 모니터링하여 MongoDB Search 인덱스를 평가하고 최적화합니다.
자세한 내용은 클러스터 지표 보기를 참조하세요.