성능

IBM Cloud® Databases for MongoDB 배치는 사용량에 따라 수동으로 스케일링되거나 특정 리소스 조건에서 자동 스케일링하도록 구성될 수 있습니다. 배포 성능을 조정하는 경우 몇 가지 요소를 먼저 고려하세요.

배치 모니터링

Databases for MongoDB 배치는 배치에서 리소스 사용량의 기본 모니터링을 위해 IBM Cloud® Monitoring 서비스와의 통합을 제공합니다. 디스크 사용량 및 IOPS와 마찬가지로 많은 사용 가능한 메트릭은 배치에서 자동 스케일링의 구성을 지원하기 위해 제시됩니다. 사용량 추세를 관찰하고 이에 대응하도록 Auto-Scaling을 구성하면 리소스 고갈로 인해 데이터베이스가 불안정해지기 전에 성능 문제를 완화하는 데 도움이 될 수 있습니다.

디스크 사용량

MongoDB 에서 데이터를 저장하는 데 얼마나 많은 공간을 사용하고 있는지 궁금하다면 기본 MongoDB 데이터 스토리지 진단을 실행하여 데이터베이스, 컬렉션, 인덱스 등의 크기를 확인할 수 있습니다. 데이터 세트의 개략적인 크기가 알려지고 고정된 경우에는 데이터를 수용하도록 디스크를 수동 스케일링할 수 있습니다. 시간이 지남에 따라 데이터 세트가 예측 가능한 비율로 증가하는 경우에는 디스크 사용량이 특정 임계값에 도달할 때 디스크 크기를 늘리도록 자동 스케일링을 구성할 수 있습니다.

디스크 I/O

Databases for MongoDB 배치에서 IOPS(Input-Output Operations per Second) 수는 스토리지 볼륨의 유형에 의해 제한됩니다. Databases for MongoDB 배포의 스토리지 볼륨은 Block Storage 내구성 볼륨으로 GB당 10 IOPS 계층입니다. I/O 이용률 한계에 도달하면 데이터베이스가 느리게 응답하거나 응답하지 않을 수 있습니다. 최적화되지 않은 쿼리, 인덱스 구축, 새 인덱스 생성 등으로 인해 IOPS가 급증할 수 있지만, 애플리케이션의 정상적인 작업 부하가 배포에 사용 가능한 IOPS를 초과할 수도 있습니다.

디스크 공간을 늘려서 배치에 사용할 수 있는 IOPS 수를 늘릴 수 있습니다. 또한 배치의 I/O 활용도가 연장된 기간 동안 특정 포화 지점에 도달하는 경우에는 디스크 크기를 자동으로 늘리도록 자동 스케일링을 구성할 수도 있습니다.

자세한 정보는 MongoDB 문서를 참조하십시오.

WiredTiger 캐시 및 메모리

Databases for MongoDB 는 파일 시스템 메모리 캐시와 내부 메모리 캐시를 모두 사용하는 WiredTiger 스토리지 엔진을 사용합니다. MongoDB는 내부 캐시에서 데이터를 처리할 때 가장 성능이 좋으며, 데이터가 파일 시스템 캐시에 있을 때 성능을 덜 발휘하며, 디스크에서 데이터를 확보해야 하는 경우에는 최소한의 성능을 제공합니다.

내부 캐시의 기본 크기는 50% of (total RAM per member - 1 GB) 또는 256 MB 중 더 큰 값입니다. 예를 들어 Databases for MongoDB 배포의 최소 메모리 크기는 데이터 멤버당 4096MB이므로 내부 캐시는 1536MB입니다( 0.5 * (4096 MB - 1024 MB) = 1536 MB.

내부/파일 시스템 캐시 비율은 배치에서 사용자 구성이 가능하지 않지만, 사용자는 총 메모리 양을 스케일링하여 내부 캐시를 조정함으로써 데이터베이스의 성능을 향상시킬 수 있습니다. 예를 들어 멤버당 메모리를 5120MB로 확장하면 내부 캐시 크기는 2048MB가 됩니다. 0.5 * (5120 MB - 1024 MB) = 2048 MB.

자동 스케일링을 사용하는 다른 방법은 디스크 I/O 활용도가 특정 임계값에 도달할 때 스케일링하도록 메모리를 설정하는 것입니다. 메모리를 늘리면 디스크에 대한 MongoDB의 읽기/쓰기 양을 감소시키므로, 추가 메모리는 추가 캐싱을 지원함으로써 디스크 I/O에 대한 부담을 줄일 수 있습니다.

WiredTiger 캐시에 대한 자세한 내용은 MongoDB 문서에서 확인할 수 있습니다.

쿼리 성능

MongoDB 문서에는 쿼리 성능 분석 방법 등 쿼리 성능에 대한 여러 리소스가 있습니다. 쿼리 성능에 대한 일반적인 아이디어를 얻은 후에는 쿼리 최적화에 대한 팁도 확인할 수 있습니다.

고급 주제인 MongoDB 에서 쿼리 플랜을 관리하는 방법에 대해 알아보세요.

기타 MongoDB 모니터링 도구

사용자는 일부 기본 MongoDB 모니터링 기능을 활용할 수도 있습니다. 예를 들어, mongotopmongostat모두를 사용할 수 있습니다.

mongotop 30 --username admin --password $PASSWORD --tls --tlsCAFile $CERTFILE --authenticationDatabase admin --host host1.databases.appdomain.cloud:31712, host2.databases.appdomain.cloud:31712

mongostat -n 20 1 --username admin --password $PASSWORD --tls --tlsCAFile $CERTFILE --authenticationDatabase admin --host host1.databases.appdomain.cloud:31712,host2.databases.appdomain.cloud:31712 --json

MongoDB 데이터베이스의 상태를 보고하는 문서화된 명령 을 실행하십시오.

많은 MongoDB 유틸리티 및 명령을 실행하려면 클러스터 모니터 역할이 필요합니다. 이는 admin 기본 역할 세트의 일부가 아닙니다. 배치의 admin 사용자에게 클러스터 모니터 역할을 부여 하십시오.

자세한 정보는 우수 사례 블로그 게시물 을 참조하십시오.