Wanneer wordt Dynamodb Throttle Request?

In het antwoord op “Hoe is Amazon DynamoDB-doorvoer berekend en beperkt ? “Er is gesuggereerd dat Dynamodb Throttles-aanvragen wanneer u de ingerichte doorvoer op per seconde overschrijdt. Dit is echter in tegenspraak met mijn ervaring.

Ik heb een tafel waar ik meerdere rijen paal, vaak het aantal rijengte van de ingevoerde schrijfcapaciteit. Dit gebeurt in korte bursts. Op een gegeven moment heb ik zelfs 5 minuten gemiddeld boven de ingerichte capaciteit. Otoh, 15 minuten gemiddeld is onder de capaciteit. Ik heb in die periode geen gesmolten verzoek.

5 minuten gemiddelde pieken bij 8.053 met een voorzieningen van 6:

15 minuten gemiddelde pieken Goed onder de bezochte capaciteit:

Dus wanneer doet DynamoDB-gasverzoeken? Welk soort gemiddelde duurt het in rekening? Hoe hoog boven de ingevoerde capaciteit kan de burst zijn voordat het wordt versterkt?


Antwoord 1, Autoriteit 100%

DYNAMODB is ontworpen om ervoor te zorgen dat uw voorzieningen op per seconde beschikbaar is. Als u een tabel voor tien 1KB bepaalt, luidt Dynamodb per seconde voldoende capaciteit om die doorvoer te hanteren. Bovendien zal DynamoDB u soms in staat stellen om een ​​beperkte uitbarsting boven uw provisioned-doorvoer te bereiken gedurende een korte periode. Dit is bedoeld om natuurlijke variaties in klantwerkbelasting te absorberen. Deze bursting is niet gegarandeerd en het is niet altijd beschikbaar (en de aard van de beschikbare bursting kan in de loop van de tijd veranderen). Zoals momenteel wordt beschreven in de documentatie van de best practices, om de beste prestaties te krijgen, moet u een gelijkmatig verdeelde werklast hebben die niet overschrijdt met uw geleverde capaciteit en de belasting gelijkmatig over de sleutelruimte verdeelt. Als de realiteit van het productiegedrag voor uw toepassing echter afwijkt van een gelijkmatig verdeelde werklast, kan DynamoDB enkele van de bursts absorberen.

Wat betreft hoeveel u uw tabel kunt voorzien, het hangt veel van uw werklast af. Je zou kunnen beginnen met provisioning aan zoiets als 80% van je pieken en vervolgens je tabelcapaciteit aanpassen, afhankelijk van het aantal throttles dat je ontvangt (die je kunt zien in je cloudwatch-grafieken) en de tolerantie van je applicatie voor latentie veroorzaakt door pogingen. Houd er rekening mee dat DynamoDB geen onbeperkte uitbarstingen boven uw bezienswaardigheid mogelijk maakt. Mogelijk kunt u korte uitbarstingen absorberen, maar u kunt een doorvoersnelheid voor een langere periode van tijd niet ondersteunen. De algemene begeleiding die we kunnen geven, is om te voorzien in iets in de buurt van uw toppen en vervolgens te bellen tijdens het kijken naar throttles.

Dit antwoord is gepost in AWS-forums

Disclaimer: ik werk voor Amazon, DynamoDB-team.


Antwoord 2, Autoriteit 23%

Er is een hint in de DynamoDB-documentatie Dat verklaart hoe bursting werkt:

Wanneer u geen volledig gebruik maakt van de doorvoer van een partitie, behoudt DynamoDB een deel van uw ongebruikte capaciteit voor latere uitbarstingen van doorvoergebruik. DynamoDB behoudt momenteel vijf minuten (300 seconden) van ongebruikte lees- en schrijfcapaciteit.

Maar het zegt ook dat u niet kunt vertrouwen op dit gedrag:

Ontwerp uw aanvraag echter niet, zodat het afhangt van burstcapaciteit die te allen tijde beschikbaar is: Dynamodb kan en gebruikt de burstcapaciteit voor achtergrondonderhoud en andere taken zonder voorafgaande kennisgeving.

Dat zou in ieder geval verklaren waarom het mogelijk was om een ​​gemiddelde van 5 minuten boven de voorziene capaciteit te hebben. Met de bovenstaande uitleg zou het zelfs mogelijk zijn om gemiddelden van 15 minuten (of langere tijdspannes) boven de voorziene capaciteit te hebben, als u een piek aan het begin van het interval heeft en minder gebruik binnen de 300 seconden voor het begin van het interval.


Antwoord 3

DynamoDB biedt enige flexibiliteit bij het inrichten van uw doorvoer per partitie door burst-capaciteit te bieden. Wanneer u de doorvoer van een partitie niet volledig gebruikt, reserveert DynamoDB een deel van die ongebruikte capaciteit voor latere uitbarstingen van doorvoer om gebruikspieken op te vangen.

DynamoDB behoudt momenteel tot 5 minuten (300 seconden) ongebruikte lees- en schrijfcapaciteit. Tijdens een incidentele uitbarsting van lees- of schrijfactiviteit kunnen deze extra capaciteitseenheden snel worden verbruikt, zelfs sneller dan de per seconde ingerichte doorvoercapaciteit die u voor uw tabel heeft gedefinieerd.

DynamoDB kan ook burst-capaciteit verbruiken voor achtergrondonderhoud en andere taken zonder voorafgaande kennisgeving.

Other episodes