온디맨드 용량 모드를 사용하는 DynamoDB 테이블은 애플리케이션의 트래픽 볼륨에 따라 자동으로 조정됩니다. 하지만 온디맨드 모드를 사용하는 테이블은 여전히 제한받을 수 있습니다. 이 주제에서는 온디맨드 테이블의 일반적인 제한 문제를 해결하는 방법을 설명합니다.
트래픽이 이전 최고치의 2배 이상입니다.
30분 이내에 이전 트래픽 최고치의 2배를 초과하면 제한 문제가 발생할 수 있습니다. 이전 트래픽 최고치를 초과하기 전에 최소 30분에 걸쳐 트래픽 증가를 분산시키는 것이 좋습니다. 테이블로 향하는 트래픽을 모니터링하려면 Amazon CloudWatch의 ConsumedReadCapacityUnits
지표를 사용하세요. 자세한 내용은 DynamoDB 지표 및 차원 단원을 참조하십시오.
새 온디맨드 테이블의 경우 최대 4,000회 쓰기 요청 단위 또는 12,000회 읽기 요청 단위를 즉시 처리할 수 있습니다.
온디맨드 용량 모드로 전환한 기존 테이블의 경우 이전 최고치는 다음 값 중 하나입니다.
-
테이블에 대한 이전 프로비저닝 처리량의 절반
-
온디맨드 용량 모드를 사용하여 새로 생성된 테이블의 설정
자세한 내용은 온디맨드 용량 모드의 초기 처리량을 참조하세요.
트래픽이 파티션당 최대값 초과
테이블 또는 GSI의 각 파티션은 최대 3,000회 읽기 요청 단위나 1,000회 쓰기 요청 단위를 처리할 수 있습니다. 파티션에 대한 트래픽이 이 제한을 초과하면 파티션에 스로틀링이 발생할 수 있습니다. 이 문제를 해결하려면 다음 작업을 수행합니다.
-
DynamoDB용 CloudWatch Contributor Insights를 사용하여 테이블에서 가장 자주 액세스되고 제한되는 키를 식별합니다.
-
핫 파티션 키에 대한 요청이 시간 경과에 따라 분산되도록 테이블에 대한 요청을 무작위로 지정합니다. 자세한 내용은 쓰기 샤딩을 사용해 DynamoDB 테이블에 워크로드를 고르게 배포 섹션을 참조하세요.
핫키로 인해 제한 문제가 발생할 수 있음
DynamoDB에서 카디널리티가 높지 않은 파티션 키는 몇 개의 파티션만을 대상으로 하는 요청이 많을 수 있습니다. 이 결과 생성된 핫 파티션이 파티션 제한인 초당 3,000RCU 또는 1,000WCU를 초과하면 스로틀링이 발생할 수 있습니다.
진단 도구인 CloudWatch Contributor Insights(CCI)는 각 테이블의 항목 액세스 패턴에 대한 CCI 그래프를 제공하여 이를 디버깅하는 데 도움이 될 수 있습니다. DynamoDB 테이블의 가장 자주 액세스하는 키와 기타 트래픽 추세를 지속적으로 모니터링할 수 있습니다. CloudWatch Contributor Insights에 대한 자세한 내용은 CloudWatch Contributor Insights for DynamoDB를 참조하세요. 자세한 내용은 DynamoDB에 워크로드가 배포되도록 파티션 키 설계 및 올바른 DynamoDB 파티션 키 선택
트래픽이 테이블당 계정 할당량 초과
온디맨드 테이블의 경우 테이블 수준 읽기 처리량 할당량 및 테이블 수준 쓰기 처리량 할당량은 계정 수준에서 적용됩니다. 기본적으로 테이블 처리량은 최대 4만 개의 읽기 요청 단위와 4만 개의 쓰기 요청 단위입니다. 테이블로 향하는 트래픽이 테이블당 계정 할당량의 처리량을 초과할 경우 테이블에 제한이 발생할 수 있습니다. 이 문제를 해결하려면 Service Quotas 콘솔을 사용하여 계정의 테이블 수준 읽기 처리량 할당량 또는 쓰기 처리량 할당량을 늘리세요.
테이블의 글로벌 보조 인덱스가 제한됨
DynamoDB 테이블에 제한받는 중인 보조 글로벌 인덱스가 있는 경우, 제한으로 인해 기본 테이블에 역압 제한이 발생할 수 있습니다. 자세한 내용은 글로벌 보조 인덱스에 제한이 발생하면 Amazon DynamoDB 테이블에 어떤 영향을 미치나요?
트래픽이 구성된 최대 처리량을 초과합니다.
온디맨드 테이블의 읽기 또는 쓰기 작업이 사전 정의된 처리량 제한을 초과하면 테이블이 일시적으로 제한되고 ThrottlingException 오류 메시지가 표시됩니다.
사용 사례에 따라 다음 작업을 완료합니다.
-
최대 테이블 처리량 설정을 늘리거나 끄려면 UpdateTable API를 사용합니다.
-
기다렸다가 요청을 다시 시도합니다. 오류 재시도 횟수 및 지수 백오프 섹션을 참조하세요.
-
테이블 또는 글로벌 보조 인덱스에 구성된 최대 처리량을 모니터링하려면 CloudWatch 콘솔에서 OnDemandMaxReadRequestUnits 및 OnDemandMaxWriteRequestUnits 지표를 사용합니다.