DynamoDB on-demand throughput exceeded
요약 — 네, 온디맨드 테이블도 여전히 스로틀링될 수 있습니다. 세 가지 원인: 최대 처리량(MaxReadRequestUnits/MaxWriteRequestUnits)을 설정하고 넘었거나; 30분 내에 이전 트래픽 피크의 두 배 이상을 몰았거나; 테이블 수준 할당량(테이블당 기본 40,000 읽기 요청 단위와 40,000 쓰기 요청 단위)에 도달했습니다. 최대치를 올리거나 제거하고, 트래픽을 점진적으로 램프업하고, 지수 백오프 재시도를 유지하세요.
무엇을 의미하는가
ThrottlingException: Rate of requests exceeds the allowed throughput.온디맨드 모드는 트래픽을 수용하도록 확장하지만, 즉각적이지 않고 상한 없이는 아닙니다. 새 온디맨드 테이블은 즉시 초당 최대 4,000 쓰기와 12,000 읽기를 지속하며, 온디맨드는 이전 트래픽 피크의 두 배까지 즉시 수용합니다. 구성된 최대치 초과, 30분 내에 그 두 배를 앞지르기, 또는 할당량 초과는 모두 스로틀링으로 나타납니다 — ThrottlingException은 HTTP 400이며 재시도 가능하고, 오류는 도달한 리소스와 한도를 지정하는 ThrottlingReason 필드(예: IndexWriteMaxOnDemandThroughputExceeded)를 지닙니다.
왜 발생하는가
- 구성된 최대 처리량 —
MaxReadRequestUnits/MaxWriteRequestUnits를 설정했고 수요가 그것을 넘었습니다. DynamoDB가ThrottlingException을 반환합니다(선택한 비용 통제 상한이며 최선의 노력으로 적용됨). - 이전 피크의 2배보다 빠름 — 온디맨드는 이전 피크의 두 배까지 즉시 수용하지만, 30분 내에 그 피크의 두 배를 초과하면 스로틀링이 발생할 수 있습니다.
- 콜드 스타트 램프 — 완전히 새로운 테이블(또는 생성 직후의 대량 로드)이 초당 4,000 쓰기와 12,000 읽기의 초기 기준선을 초과합니다.
- 테이블 수준 할당량 — 테이블당 기본 상한인 40,000 읽기 요청 단위와 40,000 쓰기 요청 단위; 계정 수준 할당량 위반은 대신
RequestLimitExceeded로 나타납니다. - 핫 파티션 — 한 파티션 키에 집중된 트래픽으로, 테이블 모드와 관계없이 자체 파티션별 한도를 가집니다.
어떻게 해결하는가
- 구성된 최대치를 올리세요 —
UpdateTable을 통해MaxReadRequestUnits/MaxWriteRequestUnits를 늘리거나, 사용자 지정 상한을 제거하려면 값을-1로 설정하세요(서비스 할당량은 여전히 적용). - 알려진 스파이크 전에 사전 워밍하세요 — DynamoDB의 warm throughput 설정을 사용하거나, 트래픽 증가를 최소 30분에 걸쳐 분산해 온디맨드의 두 배 확장이 단계 변화를 쫓기보다 수요보다 앞서 유지되도록 하세요.
- 지수 백오프 재시도를 유지하세요 — SDK는 기본적으로 스로틀을 재시도합니다. 버스트 로드에는 적응형 재시도 모드를 사용하세요.
- 대량 가져오기를 조절하거나 새 테이블을 두드리는 대신 S3 가져오기 기능을 사용하세요.
- 키 공간을 분산해 단일 파티션 키가 핫해지지 않도록 하세요 — 핫 파티션은 테이블에 여유가 있어도 스로틀링됩니다.
- 테이블에 40,000 읽기/쓰기 요청 단위 이상이 정당하게 필요하면 할당량 증가를 요청하세요.
어느 키가 요청을 흡수하는지 쫓나요? DynoTable 데스크톱 앱에서 테이블을 탐색하고 필터링해 처리량을 제한하기 전에 핫 파티션 키를 찾으세요.
FAQ
DynamoDB 온디맨드 테이블도 스로틀링될 수 있나요? 네. 온디맨드 테이블은 구성된 최대 처리량을 넘거나, DynamoDB가 확장을 마치기 전에 이전 트래픽 피크의 두 배 이상을 몰거나, 테이블당 기본 할당량인 40,000 읽기와 40,000 쓰기 요청 단위를 넘거나, 트래픽을 핫 파티션 키에 집중하면 스로틀링됩니다.
온디맨드 처리량 한도를 어떻게 올리나요?
UpdateTable을 통해 MaxReadRequestUnits/MaxWriteRequestUnits를 늘리거나, 사용자 지정 상한을 제거하려면 값을 -1로 설정하세요 — 계정 할당량은 여전히 적용됩니다. 테이블당 기본 40,000 요청 단위 이상이 필요하면 할당량 증가를 요청하세요.
관련 오류
- ProvisionedThroughputExceededException — 프로비저닝 모드 등가물.
- ThrottlingException — 제어 플레인 / 계정 속도 한도.
- 학습: On-demand vs provisioned · Hot partitions
참고 자료
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB maximum throughput for on-demand tables — Amazon DynamoDB Developer Guide
- OnDemandThroughput — Amazon DynamoDB API Reference
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
공식 AWS 문서(위 링크)를 기준으로 2026-07-13에 마지막으로 검증되었습니다.