web-dev-qa-db-fra.com

Quand l'accélérateur DynamoDB demande-t-il?

Dans la réponse à " Comment le débit Amazon DynamoDB est-il calculé et limité? ", il a été suggéré que les accélérations DynamoDB demandent chaque fois que vous dépassez le débit provisionné par seconde. Cependant, cela contredit mon expérience.

J'ai une table où je poste plusieurs lignes, souvent le nombre de lignes dépassant largement la capacité d'écriture provisionnée. Cela se produit par courtes rafales. À un moment donné, j'ai même eu une moyenne de 5 minutes supérieure à la capacité prévue. OTOH, la moyenne de 15 minutes est inférieure à la capacité. Je n'ai reçu aucune demande limitée pendant cette période.

5 minutes de pointe moyenne à 8,053 avec une capacité provisionnée de 6: 5 minutes average

15 minutes de pointe en moyenne bien en deçà de la capacité prévue:

enter image description here

Alors, quand les demandes d'accélérateur DynamoDB? Quel type de moyenne prend-elle en compte? Quelle est la capacité supérieure à la capacité allouée avant l'éclatement?

50
vartec

DynamoDB est conçu pour garantir que votre capacité provisionnée est disponible par seconde. Si vous provisionnez une table pour dix lectures de 1 Ko par seconde, DynamoDB vous donnera suffisamment de capacité pour gérer ce débit. De plus, DynamoDB vous permettra parfois d'obtenir un éclatement limité au-dessus de votre débit provisionné pendant une courte période. Ceci est destiné à absorber les variations naturelles des charges de travail des clients. Cet éclatement n'est pas garanti et il n'est pas toujours disponible (et la nature de l'éclatement disponible peut changer avec le temps). Comme cela est actuellement décrit dans la documentation des meilleures pratiques, afin d'obtenir les meilleures performances, vous devez disposer d'une charge de travail uniformément répartie qui ne dépasse pas votre capacité provisionnée et répartir la charge uniformément sur l'espace clé. Cependant, si la réalité du comportement de production de votre application s'écarte d'une charge de travail uniformément répartie, DynamoDB peut absorber certaines des rafales.

Quant à la quantité à approvisionner votre table, cela dépend beaucoup de votre charge de travail. Vous pouvez commencer par approvisionner quelque chose comme 80% de vos pics, puis ajuster la capacité de votre table en fonction du nombre d'accélérations que vous recevez (que vous pouvez voir dans vos graphiques CloudWatch) et de la tolérance de votre application pour la latence induite par les tentatives. Gardez à l'esprit que DynamoDB n'autorise pas de rafales illimitées au-dessus de votre capacité provisionnée. Vous pouvez être en mesure d'absorber de courtes rafales, mais vous ne pouvez pas maintenir un débit supérieur à votre niveau de capacité provisionnée pendant une période prolongée. L'orientation générale que nous pouvons donner est de prévoir quelque chose près de vos sommets, puis de composer le numéro tout en surveillant les gaz.

Cette réponse a été publiée dans les forums AWS

Avertissement: je travaille pour Amazon, l'équipe DynamoDB.

67
Dan Andreatta

Il y a un indice dans la documentation DynamoDB qui explique comment fonctionne l'éclatement:

Lorsque vous n'utilisez pas pleinement le débit d'une partition, DynamoDB conserve une partie de votre capacité inutilisée pour les salves ultérieures d'utilisation du débit. DynamoDB conserve actuellement jusqu'à cinq minutes (300 secondes) de capacité de lecture et d'écriture inutilisée.

Mais il indique également que vous ne pouvez pas vous fier à ce comportement:

Cependant, ne concevez pas votre application de manière à ce qu'elle dépende de la capacité de rafale disponible à tout moment: DynamoDB peut et utilise la capacité de rafale pour la maintenance en arrière-plan et d'autres tâches sans préavis.

Au moins, cela expliquerait pourquoi il était possible d'avoir une moyenne de 5 minutes au-dessus de la capacité prévue. Avec l'explication ci-dessus, il serait même possible d'avoir des moyennes de 15 minutes (ou des intervalles de temps plus longs) au-dessus de la capacité provisionnée, si vous avez un pic au tout début de l'intervalle et moins d'utilisation dans les 300 secondes avant le début de l'intervalle.

17
Ben Romberg