Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Diagnosi del throttling
Quando la tua applicazione subisce una limitazione, DynamoDB fornisce informazioni dettagliate sulle eccezioni e CloudWatch metriche mirate per aiutarti a diagnosticare questi eventi.
Questa sezione presenta un approccio sistematico alla comprensione degli eventi di throttling nelle applicazioni DynamoDB. Mostra come interpretare le eccezioni di limitazione, correlarle con le CloudWatch metriche per ottenere informazioni più approfondite e capire quali modifiche ridurrebbero il throttling nelle applicazioni DynamoDB.
Comprendere le eccezioni di limitazione
Quando DynamoDB limita una richiesta, restituisce eccezioni specifiche con informazioni diagnostiche dettagliate. Ad esempio, in Java, queste includono, o. ProvisionedThroughputExceededException
RequestLimitExceeded
ThrottlingException
Ogni eccezione include ThrottlingReasons
una raccolta di dati individuali ThrottlingReason
contenenti due campi chiave per aiutarti a identificare e comprendere la limitazione:
-
Un motivo: un campo concatenato che segue il formato
<ResourceType><OperationType><LimitType>
-
Un ARN di risorsa: l'Amazon Resource Name (ARN) della tabella o dell'indice interessato
Il campo motivo segue uno schema coerente che ti aiuta a capire esattamente cosa sta succedendo:
-
ResourceType(Cosa viene limitato): o
Table
Index
-
OperationType(Che tipo di operazione): o
Read
Write
-
LimitType(Perché si è verificata la limitazione):
-
KeyRangeThroughputExceeded
: Ciò si verifica quando una partizione specifica che supporta la tabella o l'indice ha consumato una capacità di lettura o scrittura superiore ai limiti di velocità effettiva interni per partizione. -
ProvisionedThroughputExceeded
: Ciò si verifica su una tabella fornita o su un indice secondario globale quando il tasso di consumo in lettura o scrittura ha superato l'importo assegnato. -
AccountLimitExceeded
: Ciò si verifica in una tabella o in un indice su richiesta quando il tasso di consumo in lettura o scrittura ha superato il tasso di consumo massimo per una tabella e i relativi indici impostato a livello di account. Puoi richiedere un aumento di questa quota. -
MaxOnDemandThroughputExceeded
: Ciò si verifica su una tabella o un indice su richiesta quando il tasso di consumo in lettura o scrittura ha superato il tasso di consumo massimo fornito dall'utente configurato per la tabella o l'indice. Puoi aumentare tu stesso questo valore a qualsiasi valore fino al limite dell'account o impostarlo su -1 per indicare che non ci sono limiti forniti dall'utente.
-
La risorsa ARN identifica esattamente quale tabella o indice viene limitato:
-
Per le tabelle:
arn:aws:dynamodb:[region]:[account-id]:table/[table-name]
-
Per gli indici:
arn:aws:dynamodb:[region]:[account-id]:table/[table-name]/index/[index-name]
Esempi di motivi di limitazione completa:
-
TableReadProvisionedThroughputExceeded
-
IndexWriteAccountLimitExceeded
Ciò consente di identificare esattamente quale risorsa viene limitata, che tipo di operazione l'ha causata e perché si è verificata la limitazione.
Eccezioni di esempio
Esempio 1: superamento della capacità assegnata su un GSI
{ "ThrottlingReasons": [ { "reason": "IndexWriteProvisionedThroughputExceeded", "resource": "arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders/index/OrderDateIndex" } ], "awsErrorDetails": { "errorCode": "ProvisionedThroughputExceeded", "errorMessage": "The level of configured provisioned throughput for the index was exceeded", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }
In questo esempio, l'applicazione riceve un messaggio ProvisionedThroughputExceededException
con il motivoIndexWriteProvisionedThroughputExceeded
. Le scritture su OrderDateIndex
vengono limitate perché il consumo di scrittura ha superato la capacità di scrittura fornita e configurata dal GSI.
Esempio 2: superamento del throughput massimo su richiesta
{ "ThrottlingReasons": [ { "reason": "TableReadMaxOnDemandThroughputExceeded", "resource": "arn:aws:dynamodb:us-east-1:123456789012:table/UserSessions" } ], "awsErrorDetails": { "errorMessage": "Throughput exceeds the maximum OnDemandThroughput configured on table or index", "errorCode": "ThrottlingException", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }
In questo esempio, le letture dalla UserSessions
tabella vengono limitate perché superano il limite massimo di throughput su richiesta configurato nella tabella.
Framework di diagnosi della limitazione di DynamoDB
Quando la tua applicazione riscontra una limitazione, segui questi passaggi per diagnosticare e risolvere il problema.
Passaggio 1: analizza i dettagli ThrottlingReason
-
Controlla il campo del motivo per identificare il motivo specifico della limitazione. Il motivo descrive in dettaglio il tipo di risorsa limitata (tabella o indice), il tipo di operazione che ha causato l'evento di limitazione (lettura o scrittura) e il tipo di limite superato (partizione, velocità effettiva assegnata, limite dell'account).
-
Controlla il campo ResourceArn per identificare quale risorsa (tabella o GSI) viene limitata.
-
Utilizza queste informazioni combinate per comprendere il contesto completo del problema della limitazione.
Ad esempio, si consideri questo scenario in cui si riceve la seguente eccezione
ProvisionedThroughputExceededException
con un motivo di limitazione.TableWriteKeyRangeThroughputExceeded
Il ResourceARN interessato è.arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders
Questa combinazione ti informa che le operazioni di scrittura sulla tabella vengono limitate.
CustomerOrders
La limitazione si verifica a livello di partizione (non a livello di tabella, che verrebbe visualizzato come).TableWriteProvisionedThroughputExceeded
La causa principale è che è stata superata la capacità di throughput massima per un valore o un intervallo specifico della chiave di partizione, il che indica un problema di partizione calda.La comprensione di questa relazione tra gli elementi di eccezione consente di implementare la strategia di mitigazione appropriata, in questo caso, risolvere il problema della partizione calda anziché aumentare la capacità complessiva assegnata alla tabella.
Fase 2: Identificare e analizzare le metriche correlate CloudWatch
-
Identifica le tue metriche: ogni motivo di limitazione in DynamoDB corrisponde direttamente a CloudWatch metriche specifiche che puoi monitorare per tracciare e analizzare gli eventi di throttling. È possibile derivare sistematicamente i nomi delle metriche appropriati dal motivo della limitazione. CloudWatch
-
Abbina il motivo della limitazione alle metriche corrispondenti utilizzando questa tabella di riferimento: CloudWatch
Motivi di limitazione completi e riferimento alle metriche CloudWatch Categoria Motivo della limitazione Metriche primarie CloudWatch La capacità fornita è stata superata TableReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents TableWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents IndexReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents (GSI) IndexWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents (GSI) Limiti di partizione superati TableReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents TableWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents IndexReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents (GSI) IndexWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents (GSI) Il limite massimo su richiesta è stato superato TableReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents TableWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents IndexReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents (GSI) IndexWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents (GSI) Limiti dell'account superati TableReadAccountLimitExceeded ReadAccountLimitThrottleEvents TableWriteAccountLimitExceeded WriteAccountLimitThrottleEvents IndexReadAccountLimitExceeded ReadAccountLimitThrottleEvents (GSIs) IndexWriteAccountLimitExceeded WriteAccountLimitThrottleEvents (GSIs) Ad esempio, se hai ricevuto
IndexWriteProvisionedThroughputExceeded
, come minimo, dovresti monitorare laWriteProvisionedThroughputThrottleEvents
CloudWatch metrica per l'indice specifico identificato in.ResourceArn
-
Monitora queste metriche CloudWatch per comprendere la frequenza e la tempistica degli eventi di limitazione, distinguere tra limitazione in lettura e scrittura, identificare gli schemi temporali in cui la limitazione aumenta e tenere traccia delle tendenze di utilizzo della capacità.
DynamoDB pubblica metriche dettagliate per ogni tabella e indice secondario globale. Le metriche (
ReadThrottleEvents
,WriteThrottleEvents
, eThrottledRequests
) aggregano tutti gli eventi di limitazione della tabella e dei relativi indici.
Fase 3 - Identifica i tasti limitati e le alte percentuali di accesso utilizzando Contributor Insights (per la limitazione relativa alle partizioni) CloudWatch
Se hai identificato problemi relativi alle partizioni nella Fase 1 (ad esempio KeyRangeThroughputExceeded
errori), CloudWatch Contributor Insights for DynamoDB può aiutarti a diagnosticare quali chiavi specifiche generano il traffico e registrano eventi di limitazione nella tabella o nell'indice.
-
Abilita CloudWatch Contributor Insights per la tua tabella o indice con limitazioni in base al tuo.
ResourceARN
Puoi scegliere la modalità Tasti limitati per concentrarti esclusivamente sui tasti più limitati. Questa modalità è ideale per il monitoraggio continuo in quanto elabora gli eventi solo quando si verifica una limitazione. In alternativa, la modalità Tasti accessibili e limitati consente di cercare gli schemi nei tasti a cui si accede più spesso.
-
Analizza i report per identificare gli schemi problematici. Cerca chiavi con tassi di accesso o di limitazione sproporzionatamente elevati, metti in correlazione i modelli di limitazione e traffico. Puoi creare dashboard integrate combinando grafici di Contributor Insights e metriche DynamoDB. CloudWatch
Per informazioni dettagliate sull'attivazione e l'utilizzo di CloudWatch Contributor Insights, consulta Uso di CloudWatch Contributor Insights per DynamoDB.
Fase 4 - Determinare la soluzione appropriata
Dopo aver diagnosticato la causa specifica del throttling, implementate la soluzione consigliata in base al contesto specifico. La soluzione appropriata dipende da diversi fattori, tra cui lo scenario di limitazione, la modalità di capacità della tabella, le decisioni di progettazione chiave e relative alla tabella, i modelli di accesso e l'efficienza delle query, la configurazione degli indici globali e secondari, l'architettura generale del sistema e i punti di integrazione.
Per soluzioni dettagliate per affrontare gli scenari di limitazione specifici, consulta la sezione. Guida alla risoluzione della limitazione di DynamoDB Questa risorsa fornisce strategie di correzione mirate personalizzate in base al particolare motivo di limitazione e alla configurazione della modalità di capacità.
Fase 5 - Monitora i tuoi progressi
-
Tieni traccia CloudWatch delle metriche che corrispondono al tuo scenario di limitazione.
-
Verifica l'efficacia delle tue strategie di mitigazione osservando una diminuzione degli eventi di throttling.