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

Atlas 클러스터 크기 조정 및 계층 선택

중요

Flex 클러스터에서 사용할 수 없는 기능

Flex 클러스터는 현재 이 기능을 지원하지 않습니다. 자세히 알아보려면 Atlas Flex 제한 사항을 참조하세요.

프로덕션 MongoDB deployment를 성공적으로 설정하려면 Atlas 클러스터 계층과 구성을 올바르게 선택하는 것이 중요합니다. 나중에 언제든지 클러스터를 수정할 수 있지만 데이터 세트 크기와 네트워크 요구 사항에 따라 몇 가지 계산을 수행하면 올바른 구성으로 시작할 수 있습니다.

이 페이지의 지침 대부분은 Atlas Core 클러스터에 적용됩니다. Atlas Infinite 클러스터에 다르게 적용되는 섹션은 별도로 명시되어 있습니다.

You can also configure your cluster to automatically scale its cluster tier, storage capacity, or both in response to cluster usage, thereby reducing the manual maintenance required for your cluster. To learn more, see Cluster Auto-Scaling.

Atlas Infinite 클러스터에서 클러스터 계층은 저장 IOPS 및 저장 처리량 값도 고정합니다. 이러한 값들은 저장하는 데이터 양이 늘어나도 변경되지 않습니다. 각 계층별 저장 성능을 검토하려면 Atlas Infinite 저장 클러스터 계층별 IOPs 및 처리량 값.을 참조하십시오.

참고

프로덕션용으로는 M30 이상의 클러스터를 권장합니다.

M30 이상의 클러스터가 프로덕션 환경에 권장됩니다. M10 및 M20 클러스터를 트래픽이 적은 애플리케이션의 프로덕션 환경으로 사용할 수 있습니다. M10 및 M20 계층에서 부하가 지속되는 클러스터는 시간이 지남에 따라 성능이 저하될 수 있습니다.

전용 클러스터는 클러스터 자동 확장을 지원합니다. Atlas Core 클러스터에서 클러스터 계층 자동 확장은 Atlas UI에서 클러스터를 생성할 때는 기본적으로 활성화되고, Atlas Administration API로 생성할 때는 기본적으로 비활성화됩니다. 자동 확장을 활성화하면, Atlas는 클러스터 사용량에 따라 클러스터 계층과 Atlas Core 클러스터의 경우 저장 용량을 자동으로 확장합니다. 자동 확장을 사용하면 클러스터가 현재 워크로드에 적응하고 수동으로 최적화할 필요성을 줄일 수 있습니다.

  • 클러스터 계층 확장은 다양한 클러스터 지표에 따라 클러스터 계층을 자동으로 확장 또는 축소합니다. 클러스터 계층 자동 확장을 선택 해제하려면 Auto-scale 섹션에서 Cluster Tier Scaling 확인란을 선택 취소하세요.

    Atlas가 클러스터를 자동 확장하는 방법을 제어하려면 다음을 설정합니다:

    • 클러스터가 자동으로 확장될 수 있는 최대 클러스터 계층입니다. 기본적으로 이 설정은 현재 클러스터 계층과 비교하여 다음 클러스터 계층으로 설정됩니다.

    • 클러스터를 축소할 수 있는 최소 클러스터 계층입니다. 기본적으로 이 설정은 현재 클러스터 계층으로 설정됩니다.

  • 클러스터 저장 확장은 Atlas Core 클러스터에 적용됩니다. 디스크 용량의 90% 를 사용한 경우, 클러스터 저장 확장이 클러스터 저장 용량을 자동으로 확장합니다. 이 설정은 클러스터가 항상 갑작스러운 데이터 유입을 지원할 수 있도록 하기 위해 기본적으로 활성화됩니다. 클러스터 저장 확장을 사용하지 않으려면 Auto-scale 섹션에서 Storage Scaling 확인란을 선택 취소합니다.

    Atlas Infinite clusters don't have Atlas Core storage auto-scaling. Atlas Infinite storage is decoupled from compute and grows independently of the cluster tier. To learn more, see Compute Auto-Scaling on Atlas Infinite.

Memory refers to the total physical RAM available on each data bearing node of your Atlas cluster. For example, an M30 Atlas Core cluster standard replica set is configured with 8 GB RAM on each of the 3 data bearing nodes.

Atlas Infinite 클러스터는 Atlas Core 클러스터와 각 클러스터 계층에서 동일한 RAM 용량을 가집니다. 하지만 노드 수가 다르고 별도의 저장 계층이 있습니다. 자세한 내용은 MongoDB Atlas Infinite: 아키텍처를 참조하세요.

Atlas uses the WiredTiger storage engine.

  • 기본적으로 M40 이상 클러스터의 경우 WiredTiger는 물리적 RAM의 50% 이상을 WiredTiger 캐시 전용으로 사용합니다. 남은 메모리는 다음과 같은 용도로 예약됩니다.

    • 정렬 및 계산과 같은 인메모리 작업

    • 기본 운영 체제와 기타 시스템 서비스

  • 기본적으로 M30 이하 클러스터의 경우, WiredTiger는 물리적 RAM의 25%를 WiredTiger 캐시에 할당합니다.

To learn more about memory use, see WiredTiger and Memory Use.

MongoDB는 WiredTiger 캐시를 사용하여 가장 최근에 사용된 데이터와 인덱스를 보관합니다. 작업 세트는 모든 인덱스와 자주 액세스되는 문서 세트를 합한 것입니다. 작업 세트가 RAM에 맞는 경우, MongoDB는 메모리에서 쿼리를 제공해 가장 빠른 쿼리 응답 시간을 제공합니다.

To estimate the size of the working set, you can either perform a calculation using the information obtained from db.stats() for the total index space and assume a percentage of your data space will be accessed frequently, or you can estimate your memory requirements based on educated assumptions.

Using the Atlas sample data sets, we will calculate the memory requirements to run all these databases in a single Atlas cluster. The following JavaScript program returns database information for your cluster:

var totalIndexSize = 0;
var totalDataSize = 0;
var reservedDBs = ["admin","config","local"];
// Switch to admin database and get list of databases.
db = db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
// Iterate through each database and get its stats.
dbs.forEach(function(database) {
if (reservedDBs.includes(database.name))
return;
db = db.getSiblingDB(database.name);
print("Obtaining stats for " + database.name);
var stats = db.stats();
totalIndexSize += (stats.indexSize / (1024*1024*1024)) ;
totalDataSize += (stats.dataSize / (1024*1024*1024)) ;
});
print ("Total data size in GB: " + totalDataSize.toFixed(2));
print ("Total index size in GB: " + totalIndexSize.toFixed(2));

이 프로그램은 다음과 같은 결과를 반환합니다:

Obtaining stats for sample_airbnb
Obtaining stats for sample_geospatial
Obtaining stats for sample_mflix
Obtaining stats for sample_supplies
Obtaining stats for sample_training
Obtaining stats for sample_weatherdata
Total data size in GB: 0.32
Total index size in GB: 0.02

이러한 데이터베이스를 완전히 메모리 내에서 실행하려면 최소 0.68GB의 물리적 RAM이 필요하며, WiredTiger가 물리적 RAM의 50%를 사용하므로 작업 세트를 메모리에 넣으려면 최소 0.34GB가 필요합니다.

실제 프로덕션 클러스터의 경우 데이터 및 인덱스 크기가 훨씬 커지므로 전체 데이터 세트와 인덱스를 메모리에서 실행하는 것은 실용적이지 않거나 비즈니스 또는 성능 요구 사항에 부합하지 않을 수 있습니다. 다른 시나리오를 살펴보겠습니다.

인기 있는 모바일 게임의 데이터 용량은 512GB, 인덱스 용량은 32GB입니다. 게임의 내부 시스템 데이터는 16GB를 차지하고 나머지는 플레이어 프로필 데이터입니다. 플레이어가 게임을 즐기는 동안 플레이어의 프로필은 메모리에 있어야 합니다. 이 게임의 상시 활동 플레이어의 비율은 전체 플레이어의 25%입니다. 시스템 데이터는 지속적으로 사용되며 최적의 게임 성능을 위해 RAM에 완전히 들어가야 합니다. 또한 가장 빠른 쿼리 응답 시간을 위해 모든 인덱스도 RAM에 포함되어야 합니다. 메모리 크기는 다음과 같습니다:

데이터
RAM 요구 사항
WiredTiger 캐시용 RAM

시스템: 16 GB

RAM 100%

16 GB

Index: 32 GB

RAM 100%

32 GB

플레이어 프로필: 496 GB

RAM 용량 25%

124 GB

Given these requirements, you can expect an average working set to require 172 GB of RAM.

WiredTiger는 물리적 RAM의 50%를 WiredTiger 캐시에 할당하므로 작업 세트를 수용하는 데 필요한 최소한의 물리적 RAM은 작업 세트의 두 배입니다.

이 예에서는 WiredTiger 캐시와 172GB 작업 세트를 수용하기 위해 최소 344GB의 물리적 RAM이 필요합니다. 다음 표에는 적합한 Atlas 클러스터 계층이 나열되어 있습니다.

서비스 제공자
가능한 클러스터 계층
참고 사항

AWS

  • M300 384GB RAM

  • M400 488GB RAM

  • M700 768GB RAM

M300 충분한 RAM이 있으며 더 높은 클러스터 계층으로 수직 확장할 수 있는 공간이 있습니다.

GCP

  • M300 360GB RAM

M300 RAM이 충분하지만 수직 확장이 필요한 경우 사용할 수 있는 상위 계층이 없습니다.

Azure

  • M300 384GB RAM

  • M400 512 GB RAM

M300 충분한 RAM이 있으며 더 높은 클러스터 계층으로 수직 확장할 수 있는 공간이 있습니다.

참고

256 GB RAM이 있는 Azure M200(과)와 같이 RAM이 충분하지 않은 클러스터 계층을 선택하는 경우 샤딩이 필요합니다.

클러스터 노드 간, 그리고 Atlas 클러스터에서 데이터를 사용하는 클라이언트 간의 모든 네트워크 트래픽은 네트워크 대역폭에 영향을 미칩니다. 클러스터의 적절한 크기 조정을 위해 클러스터의 각 노드가 처리할 최대 트래픽을 고려하고 이를 기반으로 적절한 Atlas 클러스터 계층을 선택합니다.

Downstream data transfer rates from your cluster to client applications can be calculated as the sum of the total documents returned over a period of time. If you are reading only from the primary node, this is the only calculation you need to do. If your applications read from secondary nodes as well, you can divide this number by the number of nodes that can serve read operations.

You can find the average document size for a database with the db.stats() method. Multiply the average document size (avgObjSize) by the number of documents served per second to estimate your bandwidth requirements.

예시

평균 문서 크기 10KB

초당 100,000건의 문서 제공

10 KB * 100,000 = 초당 1 GB

Atlas 인스턴스는 상위 계층에서 더 빠른 대역폭 속도를 제공합니다. AWS에서 지원하는 인스턴스는 M30 수준에서 초당 최대 10기가비트를 제공하는 반면, M200 수준은 초당 최대 25기가비트를 제공합니다.

이전 수치는 Atlas Core 클러스터에 적용됩니다. Atlas Infinite 클러스터에서는 저장 IOPS 및 저장 처리량이 각 클러스터 계층별로 고정됩니다. 계층별 값은 Atlas Infinite 저장 IOPs 및 클러스터 계층별 처리량 값을 참조하십시오. Atlas Infinite 클러스터에는 또한 읽기 전용 노드 또는 분석 노드를 추가하지 않는 경우 대기 노드가 하나 있습니다. 읽기 대역 폭을 추정할 때, 노드 단위 숫치를 읽기를 제공할 수 있는 노드 전체에 걸쳐 나누세요.

Atlas 클러스터는 클러스터 계층에 따라 결정되는 클라이언트 연결 수를 지원할 수 있습니다. 예를 들어, M30 클러스터는 최대 3000건의 동시 연결을 지원하고 M200 클러스터는 최대 128,000건의 동시 연결을 지원합니다. 자세한 내용은 연결 제한과 클러스터 계층 을 참조하세요.

Atlas Infinite는 퍼블릭 프리미어로 M10에서 M60 클러스터 계층을 지원하므로 M200 수치는 Atlas Infinite 클러스터에 적용되지 않습니다.