Pourquoi ma table Amazon DynamoDB est-elle limitée ?

Dernière mise à jour : 16/08/2022

Les opérations de lecture ou d\’écriture sur ma table Amazon DynamoDB sont limitées.

-ou-

Je rencontre une exception ProvisionedThroughputExceedException lorsque j\’effectue une opération de lecture ou d\’écriture sur ma table DynamoDB.

Courte description

Voici quelques-uns des problèmes de limitation les plus courants :

  • Votre table DynamoDB dispose d\’une capacité adéquate, mais la plupart des requêtes sont limitées.
  • Vous avez activé AWS Application Auto Scaling pour DynamoDB, mais votre table DynamoDB est limitée.
  • Votre table DynamoDB est en mode de capacité à la demande, mais la table est limitée.
  • Vous avez une partition sensible dans votre table.
  • Le trafic de votre table dépasse les quotas de débit de votre compte.

Solution

Pour plus d'informations sur les métriques DynamoDB à surveiller pendant les événements de limitation, consultez la section Métriques et dimensions DynamoDB. Ces métriques peuvent vous aider à localiser les opérations qui créent des demandes de limitation et à identifier la cause de la limitation. Utilisez une ou plusieurs des options de dépannage suivantes en fonction de votre cas d'utilisation.

Votre table DynamoDB dispose d'une capacité allouée adéquate, mais la plupart des demandes sont en cours de limitation

DynamoDB rapporte des métriques au niveau de la minute à Amazon CloudWatch. Les métriques sont additionnées pendant une minute, puis la moyenne est calculée. Cependant, les limites de débit de DynamoDB sont appliquées par seconde. Par exemple, si vous avez alloué 60 unités de capacité d\’écriture pour votre table DynamoDB, vous pouvez effectuer 3 600 écritures en une minute. En revanche, le fait d\’exécuter toutes les 3600 requêtes en une seconde sans aucune requête pendant le reste de la minute peut entraîner une limitation. Le nombre total d\’unités de capacité de lecture ou d\’écriture par minute peut être inférieur au débit alloué pour la table. Cependant, si toute la charge de travail est concentrée sur quelques secondes, les requêtes peuvent être limitées.

Pour résoudre ce problème, assurez-vous que votre table dispose d\’une capacité suffisante pour traiter votre trafic et réessayez les requêtes limitées à l\’aide d\’un backoff exponentiel. Si vous utilisez le kit SDK AWS, cette logique est implémentée par défaut. Pour plus d\’informations, consultez Reprises d\’erreur et backoff exponentiel.

Remarque : DynamoDB ne commence pas nécessairement à limiter la table lorsque la capacité consommée par seconde dépasse la capacité allouée. Grâce à la fonctionnalité de capacité de débordement, DynamoDB réserve une partie de la capacité inutilisée pour des pics de débit ultérieurs pour gérer les pics d\’utilisation.

Vous avez activé AWS Application Auto Scaling, mais votre table est toujours limitée

AWS Application Auto Scaling n’est pas une solution adaptée aux pics soudains de trafic pour les tables DynamoDB. Application Auto Scaling lance une augmentation de l’échelle uniquement lorsque deux points de données consécutifs pour les unités de capacité consommées dépassent la valeur d’utilisation cible configurée sur une période d’une minute. Application Auto Scaling met la capacité allouée automatiquement à l\’échelle uniquement lorsque la capacité consommée est supérieure à l\’utilisation cible pendant deux minutes de suite. En outre, une réduction de l\’échelle est déclenché lorsque 15 points de données consécutifs de la capacité consommée dans CloudWatch sont inférieurs à l\’utilisation cible. Après le lancement d\’Application Auto Scaling, un appel d\’API UpdateTable est invoqué, qui peut prendre quelques minutes pour mettre à jour la capacité allouée de votre table ou de votre index DynamoDB. Application Auto Scaling nécessite des points de données consécutifs avec des valeurs d'utilisation cible plus élevées pour augmenter la capacité allouée de la table DynamoDB. Au cours de cette période, toutes les requêtes qui dépassent la capacité allouée de la table sont soumises à limitation. Par conséquent, il n\’est pas recommandé d\’utiliser Application Auto Scaling pour gérer des charges de travail complexes dans DynamoDB. Dans ce cas, il faut envisager de passer en mode à la demande. Pour plus d\’informations, consultez Gestion automatique de la capacité de débit avec DynamoDB Auto Scaling.

Votre table utilise le mode de capacité à la demande, mais la table est toujours limitée

Lorsque la table utilise le mode de capacité à la demande, elle n'est pas limitée tant que les conditions suivantes sont remplies :

  • Le modèle d'accès est distribué uniformément sur les partitions pour éviter les problèmes liés à la partition à chaud.
  • La table ne dépasse pas le double de son pic de trafic précédent.

Pour les tables à la demande, DynamoDB alloue automatiquement plus de capacité à mesure que votre volume de trafic augmente afin de s\’assurer que votre charge de travail ne subisse pas de limitation. Toutefois, une limitation peut se produire si le volume du trafic est supérieur au double du pic précédent sur une période de 30 minutes. Pour plus d\’informations, consultez Propriétés du pic de trafic et de la mise à l\’échelle.

Vous avez une partition sensible dans votre table

Dans DynamoDB, une clé de partition qui n'a pas une cardinalité élevée peut entraîner de nombreuses demandes ciblant seulement quelques partitions et entraîner une partition à chaud. Une partition à chaud peut provoquer une limitation si les limites de partition de 3000 RCU ou 1000 WCU (ou une combinaison des deux) par seconde sont dépassées.

Pour trouver les éléments les plus consultés et les plus limités de votre table, utilisez Amazon CloudWatch Contributor Insights. Amazon CloudWatch Contributor Insights est un outil de diagnostic qui fournit une vue récapitulative des tendances de trafic de votre table DynamoDB et vous aide à identifier les clés les plus fréquemment utilisées. Avec cet outil, vous pouvez surveiller en permanence les graphiques des modèles d'accès aux éléments de votre table. Une partition à chaud peut dégrader les performances globales de votre table. Pour éviter ces mauvaises performances, répartissez les opérations de lecture et d\’écriture aussi uniformément que possible dans votre table. Pour plus d\’informations, consultez Conception de clés de partition pour répartir uniformément votre charge de travail et Choisir la bonne clé de partition DynamoDB.

Remarque : l\’utilisation de l\’outil CloudWatch Contributor Insights pour DynamoDB entraîne des frais supplémentaires. Pour plus d\’informations, consultez Facturation de CloudWatch Contributor Insights pour DynamoDB.

Le trafic de votre table dépasse les quotas de débit de votre compte

Les quotas de débit de lecture et de débit d\’écriture au niveau de la table s\’appliquent au niveau du compte dans toutes les régions. Ces quotas s\’appliquent autant aux tables en mode de capacité allouée qu\’en mode de capacité à la demande. Par défaut, le quota de débit sur votre table est de 40 000 unités de requêtes de lecture et de 40 000 unités de requêtes d\’écriture. Si le trafic vers votre table dépasse ce quota, la table peut être limitée. Pour résoudre ce problème, utilisez la console Service Quotas pour augmenter les quotas de débit de lecture et de débit d\’écriture au niveau de la table pour votre compte.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?