내용으로 건너뛰기

온디맨드 DynamoDB 테이블이 스로틀되는 이유는 무엇입니까?

3분 분량
0

온디맨드 Amazon DynamoDB 테이블이 스로틀되고 있는데 그 이유를 모르겠습니다.

해결 방법

온디맨드 용량 모드를 사용하는 DynamoDB 테이블은 애플리케이션의 트래픽 볼륨에 맞게 자동으로 조정됩니다. 하지만 다음과 같은 시나리오에서는 온디맨드 DynamoDB 테이블에 스로틀링이 발생할 수 있습니다.

트래픽이 이전 최대치의 두 배 이상입니다.

트래픽이 30분 이내에 이전 최대 처리량의 두 배를 초과할 경우 DynamoDB 온디맨드 테이블에 스로틀링이 발생할 수 있습니다.

이 문제를 해결하려면 이전 최대치의 두 배에 도달하기 전에 최소 30분 동안 트래픽 규모를 점진적으로 조정하십시오. 테이블의 처리량을 모니터링하려면 Amazon CloudWatch의 ConsumedReadCapacityUnitsConsumedWriteCapacityUnits 지표를 사용하십시오. 온디맨드 스로틀링을 모니터링하려면 ReadMaxOnDemandThroughputThrottleEventsWriteMaxOnDemandThroughputThrottleEvents를 사용하십시오.

새로운 온디맨드 테이블의 경우, 최대 4,000개 쓰기 요청 단위 또는 최대 12,000개 읽기 요청 단위까지 또는 이 둘의 선형 조합까지 즉시 사용할 수 있습니다. 계획된 이벤트 또는 최대치 이벤트의 경우 웜 처리량을 사용하여 테이블 용량 규모를 예상 사용량에 맞게 조정하십시오.

기존 테이블을 온디맨드 용량 모드로 전환하는 경우, 이전 최대치는 다음 값 중 하나입니다.

  • 새 테이블은 4,000개의 쓰기 용량 단위(WCU)와 12,000개의 읽기 용량 단위(RCU)로 시작됩니다.
  • 테이블을 시작 값보다 높게 프로비저닝한 경우 더 큰 용량이 유지됩니다.
  • 지속 사용 패턴에서는 초기 용량이 더 클 수 있습니다.

트래픽이 각 파티션의 최대 처리량을 초과함

테이블의 각 파티션은 최대 1,000개 쓰기 요청 단위 또는 3,000개 읽기 요청 단위까지, 또는 이 둘의 선형 조합까지 사용할 수 있습니다. 파티션 트래픽이 이 할당량을 초과하면 파티션이 제한될 수 있습니다.

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. DynamoDB용 CloudWatch Contributor Insights를 사용하여 테이블에 가장 자주 액세스하면서 제한된 키를 식별합니다.
  2. 향상된 지표를 사용하여 파티션 스로틀 이벤트가 원인인지 확인합니다.
  3. 쓰기 샤딩을 사용하여 요청을 파티션 전체에 균등하게 분산합니다.
  4. 오류 재시도 및 지수 백오프 전략을 최적화합니다.

트래픽이 각 테이블의 AWS 계정 할당량을 초과함

기본적으로 온디맨드 테이블의 계정 수준 할당량은 각 테이블당 40,000 WCU 및 40,000 RCU입니다. 테이블로 향하는 트래픽이 처리량 할당량을 초과하면 테이블이 스로틀될 수 있습니다.

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. CloudWatch에서 ConsumedReadCapacityUnitsConsumedWriteCapacityUnits를 현재 할당량과 비교합니다.
  2. 테이블 수준의 읽기 및 쓰기 용량 단위에 대한 계정 수준의 할당량 증가를 요청합니다.

테이블의 GSI에 스로틀링이 발생함

DynamoDB 테이블에 스로틀링되고 있는 GSI가 있으면 이 스로틀링으로 인해 기본 테이블에 역압력 스로틀링이 발생할 수 있습니다. 자세한 내용은 DynamoDB의 글로벌 보조 인덱스(GSI) 쓰기 스로틀링 및 역압 이해DynamoDB에서 GSI 사용을 참조하십시오.

트래픽이 구성된 최대 처리량을 초과함

온디맨드 테이블의 최대 처리량 할당량을 구성한 경우 처리량 할당량을 초과하면 "ThrottlingException" 오류가 발생합니다.

사용 사례에 따라 다음 조치 중 하나를 취하십시오.

  • 최대 테이블 처리량 설정을 늘리거나 비활성화하려면 UpdateTable API를 사용합니다.
  • 잠시 기다린 다음 요청을 다시 시도합니다. 자세한 내용은 오류 재시도 및 지수 백오프를 참조하십시오.

테이블 또는 GSI에 대해 구성된 최대 처리량을 모니터링하려면 CloudWatch에서 OnDemandMaxReadRequestUnitsOnDemandMaxWriteRequestUnits 지표를 사용하십시오.

관련 정보

DynamoDB 스로틀링 해결 가이드

DynamoDB 테이블에 적합한 기본 키를 선택하려면 어떻게 해야 합니까?

DynamoDB의 지표가 CloudWatch 지표와 다른 이유는 무엇입니까?

DynamoDB의 할당량

DynamoDB 온디맨드에 구성 가능한 최대 처리량 소개

AWS 공식업데이트됨 5달 전