Perché la mia tabella Amazon DynamoDB viene limitata?

6 minuti di lettura
0

Le operazioni di lettura o scrittura sulla mia tabella Amazon DynamoDB vengono limitate oppure ricevo ProvisionedThroughputExceededException quando eseguo un'operazione di lettura o scrittura sulla mia tabella DynamoDB.

Breve descrizione

Ecco alcuni dei problemi di limitazione più comuni che è possibile riscontrare:

  • La tabella DynamoDB dispone di una capacità allocata adeguata, ma la maggior parte delle richieste viene limitata.
  • Hai attivato AWS Application Auto Scaling per DynamoDB, ma la tabella DynamoDB viene limitata.
  • La tabella DynamoDB è in modalità di capacità su richiesta, ma la tabella viene limitata.
  • È presente una partizione a caldo nella tua tabella.
  • Il traffico della tua tabella sta superando le quote di velocità di trasmissione effettiva del tuo account.

Soluzione

Per informazioni sulle metriche DynamoDB che devono essere monitorate durante gli eventi di limitazione, vedi Metriche e dimensioni di DynamoDB. Tali metriche potrebbero consentire di individuare le operazioni che creano richieste limitate e di identificare la causa della limitazione. Utilizza una o più delle seguenti opzioni di risoluzione dei problemi in base al tuo caso d'uso.

La tua tabella DynamoDB dispone di una capacità allocata adeguata, ma la maggior parte delle richieste viene limitata

DynamoDB riporta le metriche a livello di minuto ad Amazon CloudWatch. Le metriche vengono calcolate come somma per un minuto e quindi calcolate come media. Tuttavia, i limiti di velocità di DynamoDB vengono applicati al secondo. Ad esempio, se sono state allocate 60 unità di capacità di scrittura per la tua tabella DynamoDB, puoi eseguire 3600 scritture in un minuto. Tuttavia, l'elaborazione di tutte le 3600 richieste in un secondo senza alcuna richiesta per il resto di quel minuto potrebbe comportare una limitazione. Il numero totale di unità di capacità di lettura o di scrittura al minuto potrebbe essere inferiore alla velocità di trasmissione effettiva prevista per la tabella. Tuttavia, se tutto il carico di lavoro rientra in un paio di secondi, le richieste potrebbero essere limitate.

Per risolvere questo problema, assicurati che la tabella abbia una capacità sufficiente per fare fronte al relativo traffico e riprovare le richieste limitate utilizzando un backoff esponenziale. Se utilizzi l'SDK AWS, questa logica è implementata per impostazione predefinita. Per ulteriori informazioni, consulta Nuovi tentativi in caso di errore e backoff esponenziale.

Nota: DynamoDB non inizia necessariamente a limitare la tabella dopo che la capacità consumata al secondo supera la capacità allocata. Con la capacità di espansione, DynamoDB riserva una parte della capacità inutilizzata per successivi burst di velocità di trasmissione effettiva per gestire i picchi di utilizzo.

È stato attivato AWS Application Auto Scaling, ma la tabella è ancora limitata

AWS Application Auto Scaling non è una soluzione adatta per affrontare picchi improvvisi di traffico con tabelle DynamoDB. Application Auto Scaling avvia un dimensionamento solo quando due punti dati consecutivi per le unità di capacità consumate superano il valore di utilizzo di destinazione configurato entro un minuto. Application Auto Scaling dimensiona automaticamente la capacità fornita solo quando la capacità consumata è superiore all'utilizzo previsto per due minuti costanti. Inoltre, viene avviato un evento di riduzione quando 15 punti dati consecutivi per la capacità consumata in CloudWatch sono inferiori all'utilizzo previsto. Dopo l'avvio di Application Auto Scaling, viene richiamata una chiamata API UpdateTable che potrebbe richiedere un paio di minuti per aggiornare la capacità assegnata per la tabella o l'indice DynamoDB. Application Auto Scaling richiede punti dati consecutivi con valori di utilizzo di destinazione più elevati per aumentare la capacità allocata della tabella DynamoDB. Durante questo periodo, tutte le richieste che superano la capacità prevista della tabella vengono limitate. Pertanto, non è consigliato utilizzare Application Auto Scaling per gestire picchi di carichi di lavoro in DynamoDB. In questo caso d'uso potresti prendere in considerazione la possibilità di passare alla modalità su richiesta. Per ulteriori informazioni, consulta Gestione automatica della capacità effettiva di trasmissione con il dimensionamento automatico di DynamoDB.

La tabella utilizza la modalità di capacità su richiesta, ma la tabella continua a essere limitata

Quando la tabella utilizza la modalità di capacità su richiesta, la tabella non rallenta purché si verifichino le seguenti condizioni:

  • Il modello di accesso è distribuito uniformemente tra le partizioni per evitare problemi legati alla partizione a caldo.
  • La tabella non supera il doppio del traffico di picco precedente.

Per le tabelle su richiesta, DynamoDB alloca automaticamente più capacità all'aumentare del volume di traffico per garantire che il carico di lavoro non subisca limitazioni. Tuttavia, può verificarsi una limitazione se il volume di traffico è più del doppio del picco precedente nell'arco di 30 minuti. Per ulteriori informazioni, vedi Picchi di traffico e proprietà di dimensionamento.

È presente una partizione a caldo nella tua tabella

In DynamoDB, una chiave di partizione che non ha una cardinalità elevata può comportare molte richieste destinate solo a poche partizioni e generare una partizione a caldo. Una partizione a caldo può causare una limitazione se vengono superati i limiti di partizione di 3000 RCU o 1000 WCU (o una combinazione di entrambi) al secondo.

Per trovare gli elementi più accessibili e limitati nella tua tabella, usa Contributor Insights di Amazon CloudWatch. Contributor Insights di Amazon CloudWatch è uno strumento diagnostico che fornisce una vista riassuntiva delle tendenze di traffico delle tabelle DynamoDB e ti aiuta a identificare le chiavi di partizione a cui si accede più frequentemente. Con questo strumento, puoi monitorare continuamente i grafici relativi ai modelli di accesso agli elementi della tua tabella. Una partizione a caldo può ridurre le prestazioni complessive della tabella. Per evitare queste prestazioni scadenti, distribuisci le operazioni di lettura e scrittura nel modo più uniforme possibile su tutta la tabella. Per ulteriori informazioni, consulta Progettazione delle chiavi di partizione per distribuire il carico di lavoro in modo uniforme e Scelta della chiave di partizione DynamoDB corretta.

Nota: l'utilizzo dello strumento Contributor Insights di Amazon CloudWatch per DynamoDB comporta costi aggiuntivi. Per ulteriori informazioni, consulta Contributor Insights di Amazon CloudWatch per la fatturazione di DynamoDB.

Il traffico della tua tabella sta superando le quote di velocità di trasmissione effettiva del tuo account

Le quote di velocità di trasmissione effettiva di lettura e di velocità di scrittura a livello di tabella si applicano a livello di account in qualsiasi regione. Tali quote si applicano alle tabelle con modalità di capacità allocata e modalità di capacità su richiesta. Per impostazione predefinita, la quota di velocità di trasmissione effettiva inserita nella tabella è di 40.000 unità di richieste di lettura e 40.000 unità di richieste di scrittura. Se il traffico verso la tabella supera questa quota, la tabella potrebbe essere limitata. Per risolvere questo problema, utilizza la Console Service Quotas per aumentare la quota di velocità di trasmissione effettiva di lettura o scrittura a livello di tabella per il tuo account.


Informazioni correlate

Utilizzo del partizionamento di scrittura per distribuire i carichi di lavoro in modo uniforme

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa