Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/

mongot 배포에 대한 하드웨어 고려 사항

이 섹션에서는 hardware 구성 요소에 대한 포괄적인 개요와 하드웨어 구성 요소가 mongot 프로세스 에 미치는 영향에 대해 설명합니다. 크기 조정 가이드라인, 필수 모니터링 권장 사항 및 실용적인 확장 조언 제공합니다.

CPU 수와 품질을 늘리면 일반적으로 복제 처리량 및 쿼리 처리량 (QPS)에 긍정적인 영향 미칩니다. CPU는 특히 동시 세그먼트 검색 사용하는 쿼리에 활용됩니다.

쿼리 처리량 기반으로 한 유용한 추정치는 CPU 코어당 10 QPS입니다. 실제 QPS는 쿼리 복잡성과 인덱스 매핑의 영향을 받기 때문에 이는 기준입니다.

CPU 사용량이 지속적으로 80%를 초과하면 확장하다 (CPU 코어 추가)이 필요하다는 것을 의미하고, 20% 미만으로 지속적으로 낮다면 확장하다 (CPU 코어 감소)이 필요하다는 의미일 수 있습니다.

수평 확장 (더 많은 mongot 노드 추가)은 총 CPU를 늘려 QPS를 높입니다.

참고

수평 확장 각 mongot 가 소스 컬렉션 에서 인덱스 데이터를 복제해야 하므로 복제본 세트 에 추가 로드를 추가합니다. 각 검색 또는 벡터 검색 인덱스 mongot 별로 새로운 변경 스트림 생성하므로 복제본 세트 크기가 추가 복제 로드를 처리하다 할 수 없는 경우 성능이 저하될 수 있습니다.

수직 확장 더 많은 쿼리를 병렬로 제공 하고 쿼리 요청 대기열을 줄임으로써 쿼리 지연 시간 에 주로 영향을 미칩니다.

mongot JVM 힙(루센 관련 데이터 구조 및 캐시용)과 파일 시스템 캐시 (인덱싱된 데이터에 효율적으로 액세스하기 위해)에 시스템 메모리를 사용합니다.

함께 배치된 아키텍처의 경우 기본값 설정이 적절한 균형을 제공합니다. 그러나 전용 인프라의 경우 기본값 JVM 힙 크기를 조정하는 것이 유용할 수 있습니다. 다음 섹션에서는 특정 hardware 및 워크로드 에 맞게 이 설정을 최적화하는 방법에 대한 지침 제공합니다.

mongot 는 주로 루센 관련 데이터 구조 및 캐시에 JVM 힙을 사용합니다. 일반적으로 mongot 의 힙 사용량은 인덱싱된 필드 수에 따라 대략적으로 조정됩니다. 힙 사용량은 문서 수나 벡터 수에 크게 영향을 받지 않습니다. 전체 텍스트 검색 및 벡터 검색 위한 효과적인 데이터 모델링은 일반적으로 인덱싱된 필드 수를 최소화합니다.

최대 약 30GB 초과하지 않는 범위에서 사용 가능한 총 시스템 메모리의 50%를 추정치로 할당합니다. 이렇게 하면 디스크에서 자주 액세스하는 인덱스 세그먼트를 캐싱하여 Lucene의 성능에 중요한 역할 하는 OS 파일 시스템 캐시 에 충분한 메모리를 사용할 수 있습니다. 기본값 으로 mongot 는 JVM 힙에 사용 가능한 총 시스템 메모리의 최대 25%, 최대 32GB (128GB 의 시스템 메모리 포함)를 할당합니다. 이 크기 조정 가이드라인은 이 기본값 에서 상향된 것입니다.

또한 힙 크기를 약 30GB 미만으로 유지하면 JVM 압축된 객체 포인터를 사용하여 메모리를 절약할 수 있습니다. 힙 크기를 이 30GB 제한 이상으로 늘리는 경우 힙 크기를 직접 48GB 이상으로 늘리는 것이 좋습니다.

기본값 힙 크기 설정을 재정의하려면 mongot 시작 스크립트 에 필요한 크기를 인수로 지정합니다. 최소 힙 크기(Xms)와 최대 힙 크기(Xmx)를 동일한 값으로 설정하다 것이 좋습니다. 예시 를 들면 다음과 같습니다.

/etc/mongot/mongot --config /etc/mongot/mongot.conf --jvm-flags "-Xms4g -Xmx4g"

인덱스 세그먼트는 메모리 매핑된 파일을 통해 액세스되므로 쿼리 지연 시간 과 처리량 OS의 파일 시스템 캐시 에 따라 크게 달라집니다. 파일 시스템 캐시 워크로드 위해 충분한 메모리를 확보해야 합니다. mongot 에 격리된 hardware 사용하면 캐시 경합을 줄일 수 있습니다.

참고

JVM 힙 크기를 사용 가능한 메모리의 50% 이상으로 늘리면 파일 시스템 캐시 사용에 필요한 메모리가 부족할 수 있습니다.

벡터 검색 의 경우 '검색 프로세스 메모리'는 HNSW 그래프 와 같은 데이터 구조를 효율적으로 저장 데 사용됩니다. 벡터 인덱스 크기가 3GB 초과하는 경우 벡터 양자화를 사용합니다. 벡터를 양자화할 때 전체 인덱스 가 아닌 인덱스 의 4%만 메모리에 저장하면 됩니다.

검색 페이지 오류디스크 IOPS 가 증가하면 운영 체제가 디스크에서 필요한 페이지를 자주 검색하고 있으며, 이는 메모리가 부족함을 나타냅니다. 1000/s에 걸쳐 페이지 오류가 지속적으로 표시되면 확장 을 고려해야 합니다.

mongot 프로세스 OutOfMemoryError 로 종료되면 JVM 힙이 인덱싱 및 쿼리 워크로드 에 비해 너무 작다는 의미입니다. 이는 소스 필드를 너무 많이 저장하거나 구조화되지 않은 데이터의 동적 매핑으로 인한 '매핑 폭발'로 인해 발생하는 경우가 많습니다. 이 문제를 해결하기 위한 프라이머리 권장 사항은 다음과 같습니다.

  1. Java 힙 크기 늘리기(수직적 확장)

    가장 직접적인 해결책은 mongot 프로세스 에 더 많은 RAM 할당하는 것입니다. 호스팅하다 사용 가능한 메모리가 있는 경우 최대 Java 힙 크기를 늘릴 수 있습니다. 이렇게 하면 인덱스 정의를 변경하지 않고도 기존 인덱스 및 쿼리 패턴에 더 많은 여유 공간을 확보할 수 있습니다.

  2. 인덱스 메모리 사용량 줄이기

    hardware 확장 이 옵션이 아니거나 효율성 위해 최적화하려는 경우 인덱스 에 필요한 메모리 양을 줄일 수 있습니다.

    1. 인덱스 정의를 검토하고 storedSource 필드를 줄이고 인덱스 에서 필수가 아닌 모든 필드를 제거 힙 압력을 줄입니다.

    2. 정적 매핑을 사용합니다. 동적 매핑은 컬렉션 문서의 모든 고유 필드 에 대한 인덱스 필드 생성합니다. 보다 선택적이고 필수 필드만 인덱싱 하면 힙 소비가 줄어듭니다.

읽기 및 쓰기 (write) IOPS는 모두 mongot 성능에 중요하며 복제, 초기 동기화 및 쿼리 처리량 영향을 미칩니다. 대부분의 사용 사례에서는 범용 SSD를 사용하는 것이 좋습니다.

일반적으로 읽기 및 쓰기 (write) IOPS는 모두 mongot 성능에 중요합니다. 데이터 복제에는 디스크에 쓰기뿐만 아니라 이전 인덱스 세그먼트가 더 큰 세그먼트로 병합되므로 읽기도 포함됩니다. 따라서 디스크 처리량 쿼리 처리량 부터 초기 동기화 인덱싱 처리량 에 이르기까지 mongot 성능의 모든 측면에 다양한 영향을 미칩니다.

디스크 크기 조정 가이드라인을 참조하세요.

Atlas Search 인덱스 만들거나 다시 작성하는 작업은 리소스를 많이 사용하며 클러스터 성능에 영향 수 있습니다. 다운타임 없는 인덱싱 의 경우 이전 인덱스 에서 사용한 디스크 공간의 125%에 해당하는 디스크 여유 공간을 할당합니다. 이 여유 공간은 재구축 중에 이전 인덱스 디스크에 유지되므로 중요합니다. 일반적으로 인덱스 재구축을 수용하려면 mongot 에 대한 디스크 허용량을 두 배로 늘리는 것이 좋습니다.

현재 인덱스 소비를 추적 하려면 Search Disk Space Used을 모니터 . 1K를 초과하는 지속적인 IOPS 사용량에 대해서는 조사가 필요합니다.

참고

mongot 호스트의 저장 사용률이 90%에 도달하면 mongot 는 읽기 전용 상태 됩니다. 이 상태 에 있는 동안 mongot 는 현재 상태 의 인덱스를 사용하여 쿼리를 계속 제공 . 완화하지 않고 소스 컬렉션 변경하면 검색 결과가 오래될 수 있습니다.

소스 컬렉션과의 인덱스 동기화를 다시 시작하려면 인덱스 데이터를 삭제하거나 저장 용량 늘려 저장 사용률을 85% 미만으로 줄이세요.

특히 이진 양자화를 사용하여 인덱스 크기를 늘리고 인덱스 데이터의 볼륨이 큰 경우에는 인스턴스에 더 큰 인덱스 데이터 작업 세트를 지원 수 있는 충분한 메모리가 있어야 합니다. 그러나 필요한 정확한 메모리 양은 워크로드 에 따라 다릅니다.

예시 를 들어, 전체가 거의 쿼리되지 않는 대규모 데이터 세트는 전체가 자주 쿼리되는 동일한 크기의 데이터 세트보다 적은 메모리로 짧은 지연 시간 으로 쿼리를 처리할 수 있습니다.

스토리지 대 메모리 비율이 높은 mongot 를 사용하는 경우 메모리 사용량을 주의 깊게 모니터 . 예시 를 들어, 64GB 의 메모리는 6400GB 의 저장 에 충분하지 않을 수 있습니다.

돌아가기

리소스 할당

이 페이지의 내용