Diagnosi del throttling - Amazon DynamoDB

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

  1. 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).

  2. Controlla il campo ResourceArn per identificare quale risorsa (tabella o GSI) viene limitata.

  3. 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

  1. 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

  2. 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 ricevutoIndexWriteProvisionedThroughputExceeded, come minimo, dovresti monitorare la WriteProvisionedThroughputThrottleEvents CloudWatch metrica per l'indice specifico identificato in. ResourceArn

  3. 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.

  1. 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.

  2. 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

  1. Tieni traccia CloudWatch delle metriche che corrispondono al tuo scenario di limitazione.

  2. Verifica l'efficacia delle tue strategie di mitigazione osservando una diminuzione degli eventi di throttling.