DynamoDB on-demand throughput exceeded
TL;DR — Sim, tabelas on-demand ainda podem fazer throttle. As três causas: você definiu um throughput máximo (MaxReadRequestUnits/MaxWriteRequestUnits) e o ultrapassou; você dirigiu mais que o dobro do seu pico de tráfego anterior em 30 minutos; ou você atingiu uma quota no nível da tabela (padrão de 40.000 unidades de requisição de leitura e 40.000 de escrita por tabela). Eleve ou remova o máximo, aumente o tráfego gradualmente, e mantenha retries de backoff exponencial.
O que significa
ThrottlingException: Rate of requests exceeds the allowed throughput.O modo on-demand escala para acomodar o tráfego, mas não instantaneamente e não sem tetos. Novas tabelas on-demand sustentam até 4.000 escritas e 12.000 leituras por segundo imediatamente, e o on-demand acomoda instantaneamente até o dobro do seu pico de tráfego anterior. Exceder um máximo configurado, ultrapassar esse dobramento em 30 minutos, ou cruzar uma quota, todos aparecem como throttling — ThrottlingException é HTTP 400 e retentável, e o erro carrega campos ThrottlingReason (por exemplo, IndexWriteMaxOnDemandThroughputExceeded) nomeando o recurso e o limite que foi atingido.
Por que isso acontece
- Um throughput máximo configurado — você definiu
MaxReadRequestUnits/MaxWriteRequestUnitse a demanda o cruzou; o DynamoDB retorna umThrottlingException(é um teto de controle de custo que você escolheu, aplicado com melhor esforço). - Mais rápido que 2x o pico anterior — o on-demand acomoda instantaneamente até o dobro do seu pico anterior, mas o throttling pode ocorrer se você exceder o dobro desse pico em 30 minutos.
- Rampa de cold-start — uma tabela totalmente nova (ou uma carga em massa logo após a criação) excede a linha de base inicial de 4.000 escritas e 12.000 leituras por segundo.
- Quota no nível da tabela — o teto padrão por tabela de 40.000 unidades de requisição de leitura e 40.000 de escrita; violações de quota no nível da conta aparecem como
RequestLimitExceeded. - Uma partição quente — tráfego concentrado em uma chave de partição, que tem seu próprio limite por partição independentemente do modo da tabela.
Como corrigir
- Eleve o máximo configurado — aumente
MaxReadRequestUnits/MaxWriteRequestUnitsviaUpdateTable, ou defina o valor como-1para remover seu teto customizado (service quotas ainda se aplicam). - Pré-aqueça antes de um pico conhecido — use a configuração de warm throughput do DynamoDB, ou espace o crescimento do tráfego por pelo menos 30 minutos para que o dobramento do on-demand fique à frente da demanda em vez de perseguir uma mudança em degrau.
- Mantenha retries de backoff exponencial — o SDK tenta novamente throttles por padrão; use o modo de retry adaptativo para cargas de rajada.
- Regule importações em massa ou use o recurso de importação do S3 em vez de martelar uma tabela nova.
- Espalhe o espaço de chaves para que nenhuma chave de partição única fique quente — uma partição quente faz throttle mesmo quando a tabela tem folga.
- Solicite um aumento de quota se você legitimamente precisa de mais de 40.000 unidades de requisição de leitura/escrita em uma tabela.
Perseguindo qual chave está absorvendo as requisições? Navegue e filtre a tabela no app desktop DynoTable para descobrir a chave de partição quente antes que ela limite seu throughput.
FAQ
Uma tabela on-demand do DynamoDB pode sofrer throttle? Sim. Tabelas on-demand fazem throttle quando você ultrapassa um throughput máximo configurado, dirige mais que o dobro do seu pico de tráfego anterior antes de o DynamoDB terminar de escalar, cruza a quota padrão por tabela de 40.000 unidades de requisição de leitura e 40.000 de escrita, ou concentra tráfego em uma chave de partição quente.
Como elevo o limite de throughput on-demand?
Aumente MaxReadRequestUnits/MaxWriteRequestUnits via UpdateTable, ou defina o valor como -1 para remover seu teto customizado — quotas de conta ainda se aplicam. Se você precisa de mais que as 40.000 unidades de requisição padrão por tabela, solicite um aumento de quota.
Erros relacionados
- ProvisionedThroughputExceededException — o equivalente do modo provisionado.
- ThrottlingException — limites de taxa de control-plane / conta.
- Aprenda: On-demand vs provisioned · Hot partitions
Referências
- 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
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.