2013-06-07 9 views
41

In der Antwort auf "How is Amazon DynamoDB throughput calculated and limited?" wurde vorgeschlagen, dass DynamoDB die Anforderung drosselt, wenn Sie den provisionierten Durchsatz pro Sekunde überschreiten. Dies widerspricht jedoch meiner Erfahrung.Wann fordert DynamoDB eine Drosselung an?

Ich habe Tabelle, wo ich mehrere Zeilen, oft die Anzahl der Zeilen weit über die bereitgestellte Schreibkapazität. Dies geschieht in kurzen Stößen. An einem Punkt habe ich sogar 5 Minuten Durchschnitt über der bereitgestellten Kapazität. OTOH, 15 Minuten Durchschnitt ist unter der Kapazität. Ich habe in dieser Zeit keine gedrosselte Anfrage.

5-Minuten-Mittelwert Peaks bei 8,053 mit bereitgestellten Kapazität von 6: 5 minutes average

15-Minuten-Mittelwert Spitzen deutlich unter provisioniert Kapazität:

enter image description here

Also, wenn tut Anfragen DynamoDB Drossel? Welchen Durchschnitt braucht es? Wie hoch über der bereitgestellten Kapazität kann der Burst sein, bevor er gedrosselt wird?

Antwort

54

DynamoDB wurde entwickelt, um sicherzustellen, dass Ihre bereitgestellte Kapazität pro Sekunde verfügbar ist. Wenn Sie eine Tabelle für zehn 1-KB-Lesevorgänge pro Sekunde bereitstellen, bietet Ihnen DynamoDB ausreichend Kapazität, um diese Durchsatzrate zu bewältigen. Darüber hinaus ermöglicht es DynamoDB manchmal, für einen kurzen Zeitraum ein begrenztes Bersten über den bereitgestellten Durchsatz hinaus zu erreichen. Dies soll natürliche Schwankungen in der Kundenarbeitsbelastung auffangen. Dieses Platzen ist nicht garantiert und es ist nicht immer verfügbar (und die Art des verfügbaren Platzens kann sich im Laufe der Zeit ändern). Wie in der Best Practices-Dokumentation beschrieben, sollten Sie eine gleichmäßig verteilte Arbeitslast erzielen, die die bereitgestellte Kapazität nicht überschreitet und die Last gleichmäßig auf den Schlüsselbereich verteilt, um die bestmögliche Leistung zu erzielen. Wenn jedoch die Realität des Produktionsverhaltens für Ihre Anwendung von einer gleichmäßig verteilten Arbeitslast abweicht, kann DynamoDB einige der Bursts absorbieren.

Wie viel Sie für die Bereitstellung Ihrer Tabelle benötigen, hängt stark von Ihrer Arbeitslast ab. Sie könnten mit der Bereitstellung von etwa 80% Ihrer Spitzen beginnen und dann die Kapazität Ihrer Tabelle anpassen, abhängig von der Anzahl der empfangenen Drosseln (die Sie in Ihren CloudWatch-Diagrammen sehen können) und der Toleranz der Anwendung für Latenzen durch Wiederholungen. Beachten Sie, dass DynamoDB keine unbegrenzten Bursts oberhalb der bereitgestellten Kapazität zulässt. Sie sind möglicherweise in der Lage, kurze Bursts zu absorbieren, aber Sie können eine Durchsatzrate über einen längeren Zeitraum nicht über dem bereitgestellten Kapazitätsniveau halten. Die allgemeine Anleitung, die wir geben können, besteht darin, etwas in der Nähe Ihrer Spitzen vorzusehen und dann nach unten zu drosseln, während wir nach Drosseln Ausschau halten.

This answer was posted in AWS forums

Haftungsausschluss: Ich arbeite für Amazon, DynamoDB Team.

+2

Mit 80% Spitzen beziehen Sie sich auf die Spitzen im Diagramm * 5 Minuten Durchschnitt *? Mit anderen Worten, sagen wir, ich habe eine Situation, in der ich alle 10 Sekunden einen Stapel von 60 Gegenständen habe. Pro Sekunde wären es 60, pro Minute oder länger sind es 6. Wie hoch ist der Peak? – vartec

+0

"Wie hoch ist der Peak?" Ich glaube nicht, dass ich dir das sagen kann, Entschuldigung. Alle unsere Berechnungen/Buchhaltung erfolgt pro Sekunde. Um den Verkehr zu überbrücken, betrachten wir einen längeren Zeitraum, um das Verkehrsmuster zu analysieren. Schließlich, wie der Post zeigt, ist die beste Vorgehensweise ein wenig Versuch und Irrtum, da Sie Ihr Nutzungsmuster und Ihre Toleranz für Wiederholungen/Drosselung kennen. –

+1

In meinen eigenen Entwicklungstests habe ich eine Tabelle mit 1 Schreibeinheit bereitgestellt und kann konstant 10 Schreibvorgänge pro Sekunde ohne Drosselung ausführen, was @vartec sagte, stimmt mit meiner eigenen Erfahrung überein, egal wie bizarr dies auch sein mag oder nicht. –

11

Es gibt eine hint in the DynamoDB documentation, die erklärt, wie Werke platzen:

Wenn Sie nicht vollständig einen Partitions Durchsatz verwendet wird, DynamoDB für später platzt der Durchsatz Verwendung einen Teil Ihrer ungenutzten Kapazitäten behält. DynamoDB speichert derzeit fünf Minuten (300 Sekunden) ungenutzter Lese- und Schreibkapazität.

Aber es sagt auch, dass Sie nicht auf dieses Verhalten verlassen können:

jedoch nicht die Anwendung entwickeln, so dass es auf Burst-Kapazität hängt jederzeit zur Verfügung stehen: DynamoDB kann und tut Verwendung Burst Kapazität für Hintergrundwartung und andere Aufgaben ohne vorherige Ankündigung.

Zumindest würde dies erklären, warum es möglich war, einen 5-Minuten-Durchschnitt über der bereitgestellten Kapazität zu haben. Mit der obigen Erklärung wäre es sogar möglich, dass 15-Minuten-Mittelwerte (oder längere Zeitspannen) über der bereitgestellten Kapazität liegen, wenn Sie am Anfang des Intervalls eine Spitze und innerhalb der 300 Sekunden vor Beginn des Intervalls weniger verbrauchen das Intervall.