Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Diagnostic des problèmes de limitation
Lorsque votre application est confrontée à une limitation, DynamoDB fournit des informations détaillées sur les exceptions correspondantes et des métriques CloudWatch ciblées pour vous aider à diagnostiquer ces événements.
Cette section présente une approche systématique pour comprendre les événements de limitation dans vos applications DynamoDB. Elle explique comment interpréter les exceptions de limitation, comment les mettre en corrélation avec les métriques CloudWatch afin d’obtenir des informations plus approfondies et comment déterminer les modifications susceptibles de réduire la limitation dans vos applications DynamoDB.
Comprendre les exceptions de limitation
Lorsque DynamoDB limite une demande, il renvoie des exceptions spécifiques avec des informations de diagnostic détaillées. Parmi ces exceptions, citons notamment ProvisionedThroughputExceededException, RequestLimitExceeded ou ThrottlingException, en Java.
Chaque exception inclut un attribut ThrottlingReasons, qui rassemble des éléments ThrottlingReason individuels contenant deux champs clés pour vous aider à identifier et à comprendre la limitation :
-
Raison : champ concaténé respectant le format
<ResourceType><OperationType><LimitType> -
ARN de la ressource : Amazon Resource Name (ARN) de la table ou de l’index concerné
Le champ Raison respecte un schéma cohérent qui vous permet de comprendre exactement ce qui se passe :
-
ResourceType (ressource affectée par la limitation) :
TableouIndex -
OperationType (type d’opération) :
ReadouWrite -
LimitType (raison pour laquelle la limitation a eu lieu) :
-
KeyRangeThroughputExceeded: cette exception a lieu lorsqu’une partition spécifique sur laquelle repose votre table ou votre index a consommé une capacité de lecture ou d’écriture dépassant les limites de débit internes par partition. -
ProvisionedThroughputExceeded: cette exception a lieu sur une table provisionnée ou un index secondaire global provisionné lorsque le taux de consommation en lecture ou en écriture a dépassé le montant provisionné. -
AccountLimitExceeded: cette exception a lieu sur une table à la demande ou un index à la demande lorsque le taux de consommation en lecture ou en écriture a dépassé le taux de consommation maximal pour une table et ses index, tel que défini au niveau du compte. Vous pouvez demander une augmentation de ce quota. -
MaxOnDemandThroughputExceeded: cette exception a lieu sur une table à la demande ou un index à la demande lorsque le taux de consommation en lecture ou en écriture a dépassé le taux de consommation maximal fourni par l’utilisateur et configuré pour cette table ou cet index. Vous pouvez vous-même augmenter cette valeur à votre gré dans les limites spécifiées au niveau du compte ou la définir sur -1 pour indiquer qu’aucune limite n’est fournie par l’utilisateur.
-
L’ARN de la ressource identifie précisément la table ou l’index qui est limité :
-
Pour les tables :
arn:aws:dynamodb:[region]:[account-id]:table/[table-name] -
Pour les index :
arn:aws:dynamodb:[region]:[account-id]:table/[table-name]/index/[index-name]
Exemples de raisons complètes de limitation :
-
TableReadProvisionedThroughputExceeded -
IndexWriteAccountLimitExceeded
Cela permet d’identifier exactement quelle ressource est limitée, quel type d’opération en est la cause et pourquoi cette limitation a eu lieu.
Exemples d’exception
Exemple 1 : dépassement de la capacité provisionnée sur 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 } } }
Dans cet exemple, l’application reçoit une exception ProvisionedThroughputExceededException avec la raison IndexWriteProvisionedThroughputExceeded. Les écritures dans l’index OrderDateIndex sont limitées, car la consommation en écriture a dépassé la capacité d’écriture provisionnée configurée pour ce GSI.
Exemple 2 : dépassement du débit maximal à la demande
{ "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 } } }
Dans cet exemple, les lectures de la table UserSessions sont limitées, car elles dépassent la limite de débit maximale à la demande configurée pour cette table.
Cadre de diagnostic des limitations DynamoDB
Lorsque votre application est confrontée à une limitation, procédez comme suit pour diagnostiquer et résoudre le problème.
Étape 1 : analyser les détails du champ ThrottlingReason
-
Vérifiez le champ Raison pour identifier la raison précise de la limitation. Celui-ci détaille le type de ressource limitée (table ou index), le type d’opération à l’origine de l’événement de limitation (lecture ou écriture) et le type de limite dépassé (partition, débit provisionné, limite de compte).
-
Vérifiez le champ resourceArn pour identifier la ressource (table ou GSI) qui est limitée.
-
Utilisez ces informations combinées pour comprendre le contexte complet du problème de limitation.
Par exemple, imaginez un scénario dans lequel vous recevez l’exception
ProvisionedThroughputExceededExceptionsuivante avec la raison de limitationTableWriteKeyRangeThroughputExceeded. Le champ resourceArn concerné estarn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders.Cette combinaison vous indique que les opérations d’écriture dans votre table
CustomerOrderssont limitées. La limitation a lieu au niveau de la partition (et non au niveau de la table, auquel casTableWriteProvisionedThroughputExceededserait affiché). La cause racine est que vous avez dépassé la capacité de débit maximale pour une valeur ou une plage de clés de partition spécifique, ce qui indique un problème de partition critique.Comprendre cette relation entre les différents éléments de l’exception vous aide à mettre en œuvre la stratégie d’atténuation appropriée. Dans ce cas, il s’agit de traiter la partition critique plutôt que d’augmenter la capacité provisionnée globale de la table.
Étape 2 : identifier et analyser les métriques CloudWatch associées
-
Identifiez vos métriques : chaque raison de limitation dans DynamoDB correspond directement à des métriques CloudWatch spécifiques que vous pouvez surveiller pour suivre et analyser les événements de limitation. Vous pouvez systématiquement déduire les noms de métriques CloudWatch appropriés à partir de la raison de la limitation.
-
Pour associer la raison de la limitation aux métriques CloudWatch correspondantes, reportez-vous à ce tableau de référence :
Raisons complètes de la limitation et référence des métriques CloudWatch Catégorie Raison de la limitation Métriques CloudWatch principales Dépassement de la capacité provisionnée TableReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents TableWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents IndexReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents (GSI) IndexWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents (GSI) Dépassement des limites de partition TableReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents TableWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents IndexReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents (GSI) IndexWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents (GSI) Dépassement du débit maximal à la demande TableReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents TableWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents IndexReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents (GSI) IndexWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents (GSI) Dépassement des limites du compte TableReadAccountLimitExceeded ReadAccountLimitThrottleEvents TableWriteAccountLimitExceeded WriteAccountLimitThrottleEvents IndexReadAccountLimitExceeded ReadAccountLimitThrottleEvents (GSI) IndexWriteAccountLimitExceeded WriteAccountLimitThrottleEvents (GSI) Par exemple, si vous avez reçu
IndexWriteProvisionedThroughputExceeded, vous devriez au minimum surveiller la métriqueWriteProvisionedThroughputThrottleEventsde CloudWatch pour l’index spécifique identifié dans le champResourceArn. -
Surveillez ces métriques dans CloudWatch pour comprendre la fréquence et le timing des événements de limitation, pour différencier la limitation en lecture de la limitation en écriture, pour identifier les modèles temporels en cas d’augmentation de la limitation et pour suivre les tendances en matière d’utilisation de la capacité.
DynamoDB publie des métriques détaillées pour chaque table et chaque index secondaire global. Les métriques (
ReadThrottleEvents,WriteThrottleEventsetThrottledRequests) regroupent tous les événements de limitation de votre table et de ses index.
Étape 3 : identifier les clés limitées et les taux d’accès élevés à l’aide de CloudWatch Contributor Insights (pour la limitation liée aux partitions)
Si vous avez identifié des problèmes liés aux partitions à l’étape 1 (tels que des erreurs KeyRangeThroughputExceeded), CloudWatch Contributor Insights pour DynamoDB peut vous aider à identifier les clés spécifiques qui génèrent votre trafic et qui sont confrontées à des événements de limitation dans votre table ou votre index.
-
Activez CloudWatch Contributor Insights pour votre table ou index limité en fonction de votre
ResourceARN.Vous pouvez choisir le mode Clés limitées pour vous concentrer exclusivement sur les clés les plus limitées. Ce mode est idéal pour la surveillance continue, car il ne traite les événements qu’en cas de limitation. Sinon, le mode Clés consultées et limitées vous permet d’identifier des modèles récurrents au niveau des clés les plus consultées.
-
Analysez les rapports pour identifier les modèles problématiques. Recherchez les clés présentant des taux d’accès ou de limitation excessivement élevés, puis mettez en corrélation la limitation avec les modèles de trafic. Vous pouvez créer des tableaux de bord intégrés combinant les graphiques de Contributor Insights et les métriques de DynamoDB CloudWatch.
Pour obtenir des informations détaillées sur l’activation et l’utilisation de CloudWatch Contributor Insights, consultez Using CloudWatch Contributor Insights for DynamoDB.
Étape 4 : déterminer la solution appropriée
Après avoir diagnostiqué la cause spécifique de la limitation, mettez en œuvre la solution recommandée en fonction de votre contexte spécifique. La solution appropriée dépend de plusieurs facteurs, notamment de votre scénario de limitation, du mode de capacité de la table, des décisions de conception de la table et des clés, de l’efficacité des requêtes et des modèles d’accès, de la configuration des index globaux et secondaires, ainsi que de l’architecture globale du système et des points d’intégration.
Pour obtenir des solutions détaillées répondant à vos scénarios de limitation spécifiques, consultez la section Guide de résolution des problèmes de limitation de DynamoDB. Cette ressource fournit des stratégies de correction ciblées adaptées à la raison particulière de la limitation et à la configuration du mode de capacité.
Étape 5 : suivre vos progrès
-
Suivez les métriques CloudWatch qui correspondent à votre scénario de limitation.
-
Pour confirmer que vos stratégies d’atténuation sont efficaces, vous devriez constater une diminution des événements de limitation.