DynamoDB on-demand throughput exceeded
In breve — Sì, le tabelle on-demand possono comunque fare throttling. Le tre cause: hai impostato un throughput massimo (MaxReadRequestUnits/MaxWriteRequestUnits) e l'hai superato; hai guidato più del doppio del tuo picco di traffico precedente entro 30 minuti; o hai raggiunto una quota a livello di tabella (default 40.000 unità di richiesta di lettura e 40.000 unità di richiesta di scrittura per tabella). Alza o rimuovi il massimo, aumenta il traffico gradualmente, e mantieni i retry con backoff esponenziale.
Cosa significa
ThrottlingException: Rate of requests exceeds the allowed throughput.La modalità on-demand scala per accogliere il traffico, ma non istantaneamente e non senza limiti. Le nuove tabelle on-demand sostengono immediatamente fino a 4.000 scritture e 12.000 letture al secondo, e on-demand accoglie istantaneamente fino al doppio del tuo picco di traffico precedente. Superare un massimo configurato, correre più veloce di quel raddoppio entro 30 minuti, o attraversare una quota si manifestano tutti come throttling — ThrottlingException è HTTP 400 e ripetibile, e l'errore porta campi ThrottlingReason (es. IndexWriteMaxOnDemandThroughputExceeded) che nominano la risorsa e il limite raggiunto.
Perché succede
- Un throughput massimo configurato — hai impostato
MaxReadRequestUnits/MaxWriteRequestUnitse la domanda l'ha superato; DynamoDB restituisce unaThrottlingException(è un tetto di controllo dei costi che hai scelto, applicato al meglio possibile). - Più veloce di 2x il picco precedente — on-demand accoglie istantaneamente fino al doppio del tuo picco precedente, ma il throttling può verificarsi se superi il doppio di quel picco entro 30 minuti.
- Rampa a freddo — una tabella nuova di zecca (o un bulk load subito dopo la creazione) supera la baseline iniziale di 4.000 scritture e 12.000 letture al secondo.
- Quota a livello di tabella — il tetto per-tabella predefinito di 40.000 unità di richiesta di lettura e 40.000 unità di richiesta di scrittura; le violazioni di quota a livello di account si manifestano invece come
RequestLimitExceeded. - Una partizione hot — traffico concentrato su una partition key, che ha il proprio limite per-partizione indipendentemente dalla modalità della tabella.
Come risolverlo
- Alza il massimo configurato — aumenta
MaxReadRequestUnits/MaxWriteRequestUnitstramiteUpdateTable, o imposta il valore a-1per rimuovere il tuo tetto personalizzato (le service quota si applicano comunque). - Pre-riscalda prima di un picco noto — usa l'impostazione warm throughput di DynamoDB, o distribuisci la crescita del traffico su almeno 30 minuti così il raddoppio di on-demand resti avanti alla domanda invece di rincorrere un cambiamento a gradino.
- Mantieni i retry con backoff esponenziale — l'SDK riprova i throttle per impostazione predefinita; usa la modalità adaptive retry per carichi a raffica.
- Modera gli import di massa o usa la funzionalità di import da S3 invece di martellare una tabella nuova.
- Distribuisci lo spazio delle chiavi così nessuna singola partition key diventi hot — una partizione hot fa throttling anche quando la tabella ha margine.
- Richiedi un aumento di quota se hai legittimamente bisogno di più di 40.000 unità di richiesta di lettura/scrittura su una tabella.
Stai cercando quale chiave sta assorbendo le richieste? Sfoglia e filtra la tabella nell'app desktop DynoTable per trovare la partition key hot prima che limiti il tuo throughput.
FAQ
Una tabella DynamoDB on-demand può essere sottoposta a throttling? Sì. Le tabelle on-demand fanno throttling quando superi un throughput massimo configurato, guidi più del doppio del tuo picco di traffico precedente prima che DynamoDB finisca di scalare, attraversi la quota per-tabella predefinita di 40.000 unità di richiesta di lettura e 40.000 di scrittura, o concentri il traffico su una partition key hot.
Come alzo il limite di throughput on-demand?
Aumenta MaxReadRequestUnits/MaxWriteRequestUnits tramite UpdateTable, o imposta il valore a -1 per rimuovere il tuo tetto personalizzato — le quote dell'account si applicano comunque. Se hai bisogno di più delle 40.000 unità di richiesta predefinite per tabella, richiedi un aumento di quota.
Errori correlati
- ProvisionedThroughputExceededException — l'equivalente in modalità provisioned.
- ThrottlingException — limiti di rate del control-plane / account.
- Impara: On-demand vs provisioned · Hot partitions
Riferimenti
- 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
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.