이전 블로그 게시물에서 MongoDB를 사용한 대규모 확장에 대한 소개를 제공했습니다. 확장은 본질적으로 반응적인 경향이 있어 애플리케이션 성능 저하 또는 더 심각한 경우 전체 애플리케이션 다운타임과 같은 문제를 야기합니다. 이러한 문제는 궁극적으로 비즈니스에 영향을 미치는 부정적인 고객 경험으로 이어집니다. 그렇다면 수익에 영향을 미치지 않도록 Mongo 데이터베이스를 확장할 적절한 시기가 언제인지 어떻게 알 수 있습니까?
앱에 적합한 임계값 찾기
애플리케이션 사용량이 급증하고 트래픽이 급증하는 폭풍우를 견디도록 하려면 부하 테스트가 필수적입니다. 프로덕션 시스템에 확장과 같은 변경 사항을 적용하기 전에 애플리케이션이 처리할 수 있는 임계값을 결정하는 시스템입니다. 더 자주 이 프로세스를 간과하고 트래픽 증가와 관련된 문제에 직면했을 때 소방 훈련을 하게 됩니다.
성공적인 MongoDB 부하 테스트로 가는 길에는 다음 고려 사항이 포함되어야 합니다.
- 병목 현상을 찾기 위해 어떤 측정항목을 모니터링해야 하나요?
- 확장 시기와 관련하여 어떤 임계값을 사용해야 합니까?
- 측정항목을 분석하려면 어떤 도구를 사용해야 하나요?
- 부하 테스트를 어디에서 실행해야 하나요?
병목 현상을 찾기 위해 어떤 측정항목을 모니터링해야 하나요?
먼저 특정 애플리케이션에 대한 제한 요소를 찾는 데 사용할 기준을 결정해야 합니다. 모든 응용 프로그램은 다릅니다. 이러한 요구 사항을 알면 데이터베이스 측에서 모니터링할 적절한 메트릭을 결정할 수 있습니다.
다음은 몇 가지 예입니다.
- 트래픽이 증가하면 애플리케이션에 초당 X개의 삽입이 필요합니다.
- 데이터는 100밀리초 이내에 사용자에게 반환되어야 합니다.
- 동시 연결 수에 제한이 있습니다.
- 높은 CPU 또는 로드 평균과 같은 서버 리소스에 제한이 있습니다.
애플리케이션 측 메트릭을 결정할 수 있으면 데이터베이스 측에서 모니터링할 대상을 결정할 수 있습니다.
예를 들어 요구 사항에 특정 수의 삽입 요청이 있어야 하는 경우 다음과 같은 쓰기 메트릭에 중점을 둡니다.
- 서버 I/O
- 데이터베이스 잠금
- 상대방 , 활성 쓰기 측면에서
- WiredTiger를 스토리지 엔진으로 실행하는 경우 사용 가능한 쓰기 티켓
측정항목 분석에 사용되는 도구
모니터링할 메트릭을 결정했으면 데이터베이스 측에서 데이터를 수집해야 합니다. 다음은 부하 계수를 분석하는 데 사용할 수 있는 몇 가지 유틸리티입니다.
- 몽고스타트 유틸리티는 잠금, 읽기 및 쓰기 대기열에 대한 실시간 데이터베이스 메트릭을 보여줍니다.
- db.currentOp() 유틸리티는 현재 활성 작업을 결정합니다.
- 몽고톱 상위 활성 컬렉션을 볼 수 있습니다.
- 상단과 같은 서버 유틸리티 , 사르 , iostat CPU 사용률 또는 디스크 처리량과 같은 측정항목을 표시합니다.
실시간 분석 외에도 MongoDB 로그를 마이닝하여 데이터베이스 활동 및 오류 조건에 대한 추가 세부 정보를 얻을 수도 있습니다. 기본적으로 MongoDB는 실행하는 데 100ms 이상 걸리는 쿼리를 기록하므로 성능이 좋지 않은 쿼리를 식별하는 좋은 도구입니다.
부하 테스트를 실행할 위치 결정
데이터를 수집하는 데 사용할 항목을 결정했으면 로드 테스트를 수행할 준비가 된 것입니다. 상식적으로 프로덕션 환경에서는 로드 테스트를 해서는 안 됩니다. 때때로 이것은 환경을 충분히 빠르게 회전시키는 것이 어려울 수 있기 때문에 쇼 스토퍼가 됩니다. 아직 ObjectRocket 플랫폼을 사용하고 있지 않다면 MongoDB 테스트 클러스터를 매우 빠르게 가동할 수 있습니다.
도움이 필요하십니까?
MongoDB 환경을 확장할 때를 아는 것은 복잡해질 수 있습니다. ObjectRocket 고객은 최고의 스케일링 및 샤딩 지원을 직접 즐깁니다. 우리 DBA는 클러스터 확장의 모든 측면을 도울 수 있으며 우리의 도움은 항상 포함되어 있습니다. 시작하려면 지금 문의하세요.
이제 MongoDB 인스턴스를 확장할 시기를 결정할 수 있으므로 다음 블로그에서는 MongoDB 인스턴스를 확장하는 방법을 다룰 것입니다.