성능 개선 도우미 개념 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

성능 개선 도우미 개념

평균 활성 세션

데이터베이스 로드(DB 로드)는 데이터베이스의 활동 수준을 측정합니다. 성능 개선 도우미의 핵심 지표는 DB Load이며, 1초 간격으로 수집됩니다. DBLoad 메트릭의 단위는 DocumentDB 인스턴스에 대한 AAS(평균 활성 세션 수)입니다.

활성 세션은 DocumentDB 인스턴스에 작업을 제출하고 응답을 기다리는 연결입니다. 예를 들어 DocumentDB 인스턴스에 쿼리를 제출하면 인스턴스가 쿼리를 처리하는 동안 데이터베이스 세션이 활성화됩니다.

평균 활성 세션을 구하기 위해 성능 개선 도우미는 쿼리를 동시에 실행하는 세션 수를 샘플링합니다. AAS는 총 세션 수를 총 샘플 수로 나눈 값입니다. 다음 표는 실행 중인 쿼리의 연속된 5개 샘플을 보여 줍니다.

샘플 쿼리를 실행 중인 세션 수 AAS 계산

1

2

2

2개 세션/1개 샘플

2

0

1

2개 세션/2개 샘플

3

4

2

6개 세션/3개 샘플

4

0

1.5

6개 세션/4개 샘플

5

4

2

10개 세션/5개 샘플

앞의 예제에서 1-5의 시간 간격에 대한 DB 로드는 2 AAS입니다. DB 로드의 증가는 평균적으로 데이터베이스에서 더 많은 세션이 실행되고 있음을 의미합니다.

측정기준

DB Load 지표는 ‘차원’이라는 하위 구성 요소로 구분할 수 있기 때문에 다른 시계열 지표와 다릅니다. 차원을 DB Load 지표의 다양한 특성에 대한 범주로 생각할 수 있습니다. 성능 문제를 진단할 때 가장 유용한 차원은 대기 상태상위 쿼리입니다.

대기 상태

대기 상태는 쿼리 문이 계속 실행되려면 특정 이벤트가 발생할 때까지 쿼리 문이 기다리도록 합니다. 예를 들어 잠긴 리소스의 잠금이 해제될 때까지 쿼리 문이 대기할 수 있습니다. DB Load와 대기 상태와 결합하여 전체 세션 상태를 이해할 수 있습니다. DocumentDB의 다양한 대기 상태는 다음과 같습니다:

DocumentDB 대기 상태 대기 상태 설명

래치

래치 대기 상태는 세션이 버퍼 풀의 페이징을 기다리고 있을 때 발생합니다. 버퍼 풀에서 자주 호출되는 것은 시스템에서 처리 중인 대규모 쿼리, 수집 검색이 빈번할 때 또는 버퍼 풀이 너무 작아서 작업 세트를 처리할 수 없을 때 더 자주 발생할 수 있습니다.

CPU

CPU 대기 상태는 세션이 CPU에서 대기할 때 발생합니다.

CollectionLock

CollectionLock 대기 상태는 세션이 컬렉션에 대한 잠금을 획득하기 위해 대기할 때 발생합니다. 이러한 이벤트는 컬렉션에 DDL 작업이 있을 때 발생합니다.

DocumentLock

DocumentLock 대기 상태는 세션이 문서에 대한 잠금 획득을 대기 중일 때 발생합니다. 동일한 문서에 대한 동시 쓰기 횟수가 많으면 해당 문서의 DocumentLock 대기 상태가 늘어나는데 기여하게 됩니다.

SystemLock

SystemLock 대기 상태는 세션이 시스템에서 대기할 때 발생합니다. 이 문제는 시스템에서 자주 실행되는 쿼리, 오래 실행되는 트랜잭션 또는 높은 동시성이 있을 때 발생할 수 있습니다.

IO

IO 대기 상태는 IO에서 세션이 완료될 때 발생합니다.

BufferLock

BufferLock 대기 상태는 세션이 버퍼의 공유 페이지에서 잠금을 획득하기 위해 대기할 때 발생합니다. 다른 프로세스가 요청된 페이지에서 열린 커서를 유지하고 있는 경우 BufferLock 대기 상태가 길어질 수 있습니다.

LowMemThrottle

Amazon DocumentDB 인스턴스의 과도한 메모리 부족으로 인해 세션이 대기 중일 때 LowMemThrottle 대기 상태가 발생합니다. 이 상태가 오래 지속되면 인스턴스를 확장하여 추가 메모리를 제공하는 것을 고려합니다. 자세한 내용은 리소스 거버너를 참조하세요.

BackgroundActivity

BackgroundActivity 대기 상태는 세션이 내부 시스템 프로세스에서 대기할 때 발생합니다.

기타

기타 대기 상태는 내부 대기 상태입니다. 이 상태가 오래 지속되면 이 쿼리를 종료하는 것을 고려하십시오. 자세한 내용은 긴 실행 중이거나 차단된 쿼리를 어떻게 찾고 종료하나요?를 참조하십시오.

상위 쿼리

대기 상태는 병목 현상을 보여주는 반면 상위 쿼리는 DB 로드에 가장 큰 기여를 하는 쿼리를 보여줍니다. 예를 들어 현재 데이터베이스에서 여러 쿼리가 실행 중이더라도 단일 쿼리가 DB 로드의 99%를 소비할 수 있습니다. 이 경우 로드가 높으면 쿼리에 문제가 있음을 나타낼 수 있습니다.

최대 vCPU

대시보드에서 데이터베이스 로드 차트는 세션 정보를 수집, 집계 및 표시합니다. 활성 세션이 최대 CPU를 초과하는지 확인하려면 최대 vCPU 선과의 관계를 확인합니다. 최대 vCPU 값은 DocumentDB 인스턴스의 vCPU(가상 CPU) 코어 수에 따라 결정됩니다.

DB 로드가 최대 vCPU 선을 상회하는 경우가 잦아지고 CPU가 기본 대기 상태라면 CPU에서 과부하가 발생한 것입니다. 이 경우 인스턴스에 대한 연결을 조절하거나 CPU 로드가 큰 쿼리를 조정하거나 더 큰 인스턴스 클래스를 고려할 수 있습니다. 대기 상태의 인스턴스가 높고 일관적이라는 것은 해결해야 할 병목 현상이나 리소스 경합 문제가 있을 수 있음을 나타냅니다. DB 로드가 최대 vCPU 선을 넘지 않는다 하더라도 이러한 문제가 나타날 수 있습니다.