1- Überschreitung des Durchsatzes in Schlüsselbereichen (Hot-Partitionen) - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

1- Überschreitung des Durchsatzes in Schlüsselbereichen (Hot-Partitionen)

Amazon DynamoDB erzwingt bestimmte Durchsatzlimits auf Partitionsebene für Tabellen und den globalen sekundären Index (GSI). Jede Partition hat eine maximale Anzahl von Lesekapazitätseinheiten (RCUs) und Schreibkapazitätseinheiten (WCUs) pro Sekunde. Wenn Partitionen konzentrierten Datenverkehr erhalten, der diese Limits überschreitet, kommt es zu einer Drosselung, während andere Operationen möglicherweise nicht ausgelastet sind. Dadurch entstehen „Hot-Partitionen“, also Partitionen, die stark beansprucht sind. Die Drosselung auf Partitionsebene von DynamoDB erfolgt unabhängig von Lese- und Schreibvorgängen – eine Partition kann Lesevorgänge drosseln, während Schreibvorgänge normal fortgesetzt werden, oder umgekehrt. Diese Drosselung kann auch dann auftreten, wenn die Tabelle oder der GSI über eine ausreichende Gesamtkapazität verfügt. Weitere Hilferessourcen:

Wenn einzelne Partitionen ihre Durchsatzlimits überschreiten, gibt DynamoDB in der Drosselungsausnahme einen Drosselungsgrund der Art KeyRangeThroughputExceeded zurück. Die Informationen geben an, dass auf einer Partition viel Datenverkehr herrscht. Außerdem ist ersichtlich, welcher Operationstyp (Lesen oder Schreiben) das Problem verursacht.

Durchsatz des Schlüsselbereichs übersteigt Abhilfemaßnahmen

Dieser Abschnitt bietet Anleitungen zur Behebung von Drosselungsszenarien auf Partitionsebene. Bevor Sie diese Anleitung verwenden, sollten Sie die spezifischen Drosselungsgründe anhand der Ausnahmebehandlung Ihrer Anwendung identifizieren und den Amazon-Ressourcennamen (ARN) der betroffenen Ressource ermitteln. Informationen dazu, wie Sie die Gründe für die Drosselung abrufen und gedrosselte Ressourcen identifizieren, finden Sie unter Diagnose-Framework für DynamoDB-Drosselungen.

Bevor Sie sich eingehender mit bestimmten Drosselungsszenarien befassen, überprüfen Sie zuerst, ob das Problem automatisch behoben wird:

  • DynamoDB passt sich durch seinen automatischen split-for-heat Mechanismus häufig an heiße Partitionen an. Wenn Sie Drosselungsereignisse sehen, die nach kurzer Zeit aufhören, hat sich Ihre Tabelle möglicherweise bereits angepasst, indem die Hot-Partition aufgeteilt wurde. Wenn Partitionen aufgeteilt werden, verarbeitet jede neue Partition einen kleineren Teil des Keyspace, sodass die Last gleichmäßiger verteilt werden kann. In vielen Fällen ist keine weitere Aktion erforderlich, da DynamoDB das Problem automatisch behoben hat.

    Weitere Hinweise zu diesem split-for-heatMechanismus finden Sie unter. Weitere Ressourcen

Falls die Drosselung weiterhin besteht, finden Sie in den unten aufgeführten spezifischen Drosselungsszenarien gezielte Abhilfemaßnahmen:

TableReadKeyRangeThroughputExceeded

Wenn dies auftritt

Die Verbrauchsrate einer oder mehrerer Partitionen in Ihrer DynamoDB-Tabelle überschreitet das Limit für den Lesedurchsatz der Partition. Diese Drosselung erfolgt unabhängig von der bereitgestellten Gesamtkapazität Ihrer Tabelle und betrifft sowohl bereitgestellte als auch On-Demand-Tabellen. Sie können die CloudWatch Messwerte überwachenAllgemeine Diagnose und Überwachung, um Ihr Drosselungsereignis zu analysieren.

Mögliche Abhilfemaßnahmen

Erwägen Sie die folgenden Schritte, um die Drosselungsereignisse zu beheben:

Für den Modus „Bereitgestellt“ und „On-Demand“:

  • Vorwärmkapazität: Wenn die Drosselung weiterhin besteht, überprüfen Sie, ob Ihre Tabelle durch ihre Grundlegendes zum Warmdurchsatz von DynamoDB-Kapazität begrenzt ist. Verwenden Sie Warmdurchsatz oder erhöhen Sie die bereitgestellte Lesekapazität vor einem erwarteten Anstieg des Datenverkehrs. Durch die Erhöhung des Warmdurchsatzes ist Ihre Tabelle besser in der Lage, plötzliche Datenverkehrsspitzen zu bewältigen, bevor es zu einer Drosselung kommt. Im Laufe der Zeit kann DynamoDB ausgelastete Partitionen auf der Grundlage von beobachteten Verwendungsmustern aufteilen, wenn sich der tatsächliche Durchsatz konstant dem Warmdurchsatz nähert.

  • Identifizieren von Hotkeys: Wenn die Tabelle das Problem nicht automatisch gelöst hat und Ihr Warmdurchsatz hoch ist oder eine Erhöhung des Durchsatzes nicht geholfen hat, müssen Sie bestimmte Hotkeys identifizieren. Verwenden Sie Identifizieren von Tastenkombinationen mithilfe von Contributor Insights CloudWatch, um festzustellen, ob bestimmte Partitions-Schlüsselwerte stark ausgelastet („hot“) sind. Dies ist ein erster Schritt, um Ihre Abhilfemaßnahmen effektiv auszurichten. Beachten Sie, dass die Identifizierung möglicherweise nicht immer einfach ist, insbesondere bei rollierenden Hot-Partitionen (bei denen verschiedene Partitionen im Laufe der Zeit ausgelastet werden) oder wenn die Drosselung durch Operationen wie Scans ausgelöst wird. Für diese komplexen Szenarien müssen Sie ggf. die Zugriffsmuster Ihrer Anwendung analysieren und sie mit dem Zeitpunkt der Drosselung korrelieren.

  • Je nach Anwendungsfall sollten Sie eventuell konsistente Lesevorgänge in Betracht ziehen: Wechseln Sie von stark konsistenten Lesevorgängen zu eventuell konsistenten Lesevorgängen, die nur die Hälfte verbrauchen RCUs und Ihre effektive Lesekapazität sofort verdoppeln können. Bewährte Methoden zur Implementierung von letztendlich konsistenten Lesevorgängen zur Reduzierung des Lesekapazitätsverbrauchs finden Sie unter DynamoDB-Lesekonsistenz.

  • Verbessern des Designs von Partitionsschlüsseln: Als langfristige Lösung sollten Sie das Verbessern des Designs von Partitionsschlüsseln erwägen, um den Zugriff gleichmäßiger auf die Partitionen zu verteilen. Dieser Ansatz bietet oft die umfassendste Lösung für Probleme mit Hot-Partitionen, da die eigentliche Ursache behoben wird. Er erfordert jedoch eine sorgfältige Planung, da er mit erheblichen Migrationsherausforderungen verbunden ist.

TableWriteKeyRangeThroughputExceeded

Wenn dies auftritt

Die Verbrauchsrate einer oder mehrerer Partitionen in Ihrer DynamoDB-Tabelle überschreitet das Limit für den Schreibdurchsatz der Partition. Diese Drosselung erfolgt unabhängig von der bereitgestellten Gesamtkapazität Ihrer Tabelle und betrifft sowohl bereitgestellte als auch On-Demand-Tabellen. Sie können die CloudWatch Messwerte überwachenAllgemeine Diagnose und Überwachung, um Ihr Drosselungsereignis zu analysieren.

Mögliche Abhilfemaßnahmen

Erwägen Sie die folgenden Schritte, um die Drosselungsereignisse zu beheben:

Für den Modus „Bereitgestellt“ und „On-Demand“:

  • Vorwärmkapazität: Wenn die Drosselung weiterhin besteht, überprüfen Sie, ob Ihre Tabelle durch ihre Grundlegendes zum Warmdurchsatz von DynamoDB-Kapazität begrenzt ist. Verwenden Sie Warmdurchsatz oder erhöhen Sie die bereitgestellte Schreibkapazität vor einem erwarteten Anstieg des Datenverkehrs. Durch die Erhöhung des Warmdurchsatzes ist Ihre Tabelle besser in der Lage, plötzliche Datenverkehrsspitzen zu bewältigen, bevor es zu einer Drosselung kommt. Im Laufe der Zeit kann DynamoDB ausgelastete Partitionen auf der Grundlage von beobachteten Verwendungsmustern aufteilen, wenn sich der tatsächliche Durchsatz konstant dem Warmdurchsatz nähert.

  • Identifizieren von Hotkeys: Wenn die Tabelle das Problem nicht automatisch gelöst hat und Ihr Warmdurchsatz hoch ist oder eine Erhöhung des Durchsatzes nicht geholfen hat, müssen Sie bestimmte Hotkeys identifizieren. Verwenden Sie Identifizieren von Tastenkombinationen mithilfe von Contributor Insights CloudWatch, um festzustellen, ob bestimmte Partitions-Schlüsselwerte stark ausgelastet („hot“) sind. Dies ist ein erster Schritt, um Ihre Abhilfemaßnahmen effektiv auszurichten. Beachten Sie die folgenden gängigen Muster:

    • Wenn Sie feststellen, dass derselbe Partitionsschlüssel häufig in Ihren Drosselungsdaten vorkommt, deutet dies auf einen konzentrierten Hotkey hin.

    • Wenn Sie keine wiederholten Schlüssel sehen, die Daten aber in geordneter Weise schreiben (z. B. als sequenzielle Zeitstempel oder scanbasierte Operationen, die der Reihenfolg der Keyspaces folgen), haben Sie wahrscheinlich rollierende Hot-Partitionen, bei denen verschiedene Schlüssel im Laufe der Zeit stark beansprucht werden, wenn Ihre Schreibvorgänge den Keyspace durchlaufen.

    Beachten Sie, dass Schreibdrosselung auch bei Operationen wie BatchWriteItem oder bei Transaktionen auftreten können, die sich auf mehrere Elemente gleichzeitig auswirken. Wenn einzelne Elemente innerhalb einer BatchWriteItem-Anforderung gedrosselt werden, überträgt DynamoDB diese Drosselungsfehler nicht an den Anwendungscode. Stattdessen gibt DynamoDB Informationen über die unverarbeiteten Elemente in der Antwort zurück, die Ihre Anwendung durch einen erneuten Versuch verarbeiten muss. Bei Transaktionen schlägt die gesamte Operation mit einer TransactionCanceledException fehl, wenn bei einem Element eine Drosselung auftritt. Bei solch komplexen Szenarien müssen Sie möglicherweise die Schreibmuster Ihrer Anwendung und die Datenerfassungsworkflows analysieren, sie mit dem Zeitpunkt von Drosselungsereignissen korrelieren und geeignete Strategien zu Wiederholungsversuchen implementieren.

  • Verbessern des Designs von Partitionsschlüsseln: Als langfristige Lösung sollten Sie das Verbessern des Designs von Partitionsschlüsseln erwägen, um den Zugriff gleichmäßiger auf die Partitionen zu verteilen. Dieser Ansatz bietet oft die umfassendste Lösung für Probleme mit Hot-Partitionen, da die eigentliche Ursache behoben wird. Er erfordert jedoch eine sorgfältige Planung, da er mit erheblichen Migrationsherausforderungen verbunden ist.

IndexReadKeyRangeThroughputExceeded

Wenn dies auftritt

Die Verbrauchsrate einer oder mehrerer Partitionen in Ihrem DynamoDB-GSI überschreitet das Limit für den Lesedurchsatz der Partition. Diese Drosselung erfolgt unabhängig von der bereitgestellten Gesamtkapazität Ihres GSI und betrifft sowohl bereitgestellte als auch On-Demand-Tabellen. Sie können die CloudWatch Messwerte überwachen, um Ihr Allgemeine Diagnose und Überwachung Drosselungsereignis zu analysieren.

Mögliche Abhilfemaßnahmen

Erwägen Sie die folgenden Schritte, um die Drosselungsereignisse zu beheben:

  • Vorwärmkapazität: Wenn die Drosselung weiterhin besteht, überprüfen Sie, ob Ihr GSI durch seine Grundlegendes zum Warmdurchsatz von DynamoDB-Kapazität begrenzt ist. Verwenden Sie Warmdurchsatz oder erhöhen Sie die bereitgestellte Lesekapazität vor einem erwarteten Anstieg des Datenverkehrs. Durch die Erhöhung des Warmdurchsatzes ist Ihr GSI besser in der Lage, plötzliche Datenverkehrsspitzen zu bewältigen, bevor es zu einer Drosselung kommt. Im Laufe der Zeit kann DynamoDB ausgelastete Partitionen auf der Grundlage von beobachteten Verwendungsmustern aufteilen, wenn sich der tatsächliche Durchsatz konstant dem Warmdurchsatz nähert.

  • Hotkeys identifizieren: Wenn der GSI das Problem nicht automatisch gelöst hat und Ihr Warmdurchsatz hoch ist oder eine Erhöhung des Durchsatzes nicht geholfen hat, müssen Sie bestimmte Hotkeys identifizieren. Verwenden Sie Identifizieren von Tastenkombinationen mithilfe von Contributor Insights CloudWatch, um festzustellen, ob bestimmte Partitions-Schlüsselwerte stark ausgelastet („hot“) sind. Dies ist ein erster Schritt, um Ihre Abhilfemaßnahmen effektiv auszurichten. Beachten Sie GSIs, dass sich die Verteilung der Partitionsschlüssel erheblich von Ihrer Basistabelle unterscheiden kann, wodurch unterschiedliche Tastenkombinationen entstehen.

  • Neugestalten von GSI-Partitionsschlüsseln: Überlegen Sie, ob Ihr GSI-Schlüsseldesign möglicherweise künstliche kritische Punkte (wie Status-Flags, reine Datumsschlüssel oder boolesche Attribute) erzeugt, die Lesevorgänge auf eine kleine Anzahl von Partitionen konzentrieren. Erwägen Sie die Verwendung zusammengesetzter Schlüssel, die das Attribut mit niedriger Kardinalität mit einem Attribut mit hoher Kardinalität kombinieren (z. B. „ACTIVE#customer123" statt nur „ACTIVE“), oder wenden Sie Techniken wie unter Verwenden von Schreib-Sharding zur gleichmäßigen Verteilung von Workloads in Ihrer DynamoDB-Tabelle beschrieben auf die Basistabellenelemente an, die sich auf die GSI-Verteilung auswirken, um Schreibvorgänge auf mehrere Partitionen zu verteilen. Für die Abfrage von Shard-Daten ist zwar zusätzliche Anwendungslogik erforderlich, um die Ergebnisse zu aggregieren, dieser Ansatz verhindert Drosselungen jedoch, indem die Zugriffsmuster gleichmäßiger verteilt werden.

IndexWriteKeyRangeThroughputExceeded

Wenn dies auftritt

Die Verbrauchsrate einer oder mehrerer Partitionen in Ihrem DynamoDB-GSI überschreitet das Limit für den Schreibdurchsatz der Partition. Diese Drosselung erfolgt unabhängig von der bereitgestellten Gesamtkapazität Ihres GSI und betrifft sowohl bereitgestellte als auch On-Demand-Tabellen. Sie können die CloudWatch Messwerte überwachenAllgemeine Diagnose und Überwachung, um Ihr Drosselungsereignis zu analysieren.

Mögliche Abhilfemaßnahmen

Erwägen Sie die folgenden Schritte, um die Drosselungsereignisse zu beheben:

  • Neugestalten von GSI-Partitionsschlüsseln: Überprüfen Sie das Design Ihres GSI-Partitionsschlüssels, um sicherzustellen, dass er über eine ausreichende Kardinalität (Eindeutigkeit) verfügt, um Schreibvorgänge gleichmäßig zu verteilen. Eine häufige Ursache für GSI-Schreibdrosselungen ist die Verwendung von Attributen mit niedriger Kardinalität als GSI-Partitionsschlüssel (z. B. Status-Flags mit nur wenigen möglichen Werten). Selbst wenn Ihre Basistabelle über gut verteilte Partitionsschlüssel verfügt, kann es beim GSI dennoch zu Hot-Partitionen kommen, wenn der Partitionsschlüssel Schreibvorgänge auf eine kleine Anzahl von Werten konzentriert. Wenn beispielsweise 80 % Ihrer Elemente den Status „Aktiv“ (status="ACTIVE") aufweisen, führt dies zu einer ausgeprägten Hot-Partition in einem statusbasierten GSI. Erwägen Sie die Verwendung zusammengesetzter Schlüssel, die das Attribut mit niedriger Kardinalität mit einem Attribut mit hoher Kardinalität kombinieren (z. B. „ACTIVE#customer123" statt nur „ACTIVE“), oder wenden Sie Techniken wie unter Verwenden von Schreib-Sharding zur gleichmäßigen Verteilung von Workloads in Ihrer DynamoDB-Tabelle beschrieben auf die Basistabellenelemente an, die sich auf die GSI-Verteilung auswirken, um Schreibvorgänge auf mehrere Partitionen zu verteilen. Für die Abfrage von Shard-Daten ist zwar zusätzliche Anwendungslogik erforderlich, um die Ergebnisse zu aggregieren, dieser Ansatz verhindert Drosselungen jedoch, indem die Zugriffsmuster gleichmäßiger verteilt werden.

  • Vorwärmkapazität: Überprüfen Sie, ob Ihr GSI durch seine Grundlegendes zum Warmdurchsatz von DynamoDB-Kapazität begrenzt ist. Verwenden Sie Warmdurchsatz oder erhöhen Sie die bereitgestellte Lesekapazität vor einem erwarteten Anstieg des Datenverkehrs. Durch die Erhöhung des Warmdurchsatzes ist Ihr GSI besser in der Lage, plötzliche Datenverkehrsspitzen zu bewältigen, bevor es zu einer Drosselung kommt. Im Laufe der Zeit kann DynamoDB ausgelastete Partitionen auf der Grundlage von beobachteten Verwendungsmustern aufteilen, wenn sich der tatsächliche Durchsatz konstant dem Warmdurchsatz nähert.

  • Optimieren Sie die GSI-Prognosen: Wenden Sie Optimieren von GSI-Projektionen Techniken an, um das Schreibvolumen auf zu reduzieren. GSIs Werden weniger Attribute projiziert, kann die Schreibkapazität, die durch jede GSI-Aktualisierung verbraucht wird, erheblich reduziert werden.

Allgemeine Diagnose und Überwachung

Bei der Behebung von Drosselungen auf Partitionsebene können verschiedene CloudWatch Metriken dabei helfen, heiße Partitionen zu identifizieren und die Ursache zu bestätigen.

CloudWatch Wesentliche Metriken

Überwachen Sie diese wichtigen Metriken, um eine Drosselung auf Partitionsebene zu diagnostizieren:

Fehlerbehebung

Identifizieren von Tastenkombinationen mithilfe von Contributor Insights CloudWatch

Gehen Sie wie folgt vor, um zu ermitteln, welche Partitionsschlüssel die Drosselung verursachen.

  1. Aktivieren Sie CloudWatch Contributor Insights für Ihre Tabelle oder GSI, um die am häufigsten gedrosselten Schlüssel zu verfolgen. Erwägen Sie, CloudWatch Contributor Insights kontinuierlich zu aktivieren, um Drosselungswarnungen in Echtzeit zu erhalten, indem Sie den Modus für gedrosselte Tasten verwenden. Dieser Modus konzentriert sich ausschließlich auf gedrosselte Anfragen, indem Ereignisse nur dann verarbeitet werden, wenn eine Drosselung eintritt. Diese gezielte Überwachung ist eine kostengünstige Methode, um Drosselungsprobleme kontinuierlich im Blick zu behalten.

  2. Ermitteln Sie, welche Schlüssel die Probleme mit der Hot-Partition verursachen.

  3. (Wenn der vollständige Modus für Schlüssel mit Zugriff und Drosselungen aktiviert ist) Analysieren Sie die Zugriffsmuster im Zeitverlauf, um festzustellen, ob Hotkeys konsistent sind oder nur zu bestimmten Zeiten auftreten.

Verbessern des Designs von Partitionsschlüsseln

Verwenden Sie diesen Ansatz, wenn Sie Ihr Tabellenschema ändern können, um den Datenverkehr besser auf die Partitionen zu verteilen. Sollte dies möglich sein, ist dies die effektivste langfristige Lösung für Probleme mit Hot-Partitionen. Im Idealfall sollte das Design der Partitionsschlüssel in der ersten Phase des Tabellenentwurfs sorgfältig geprüft werden.

Die Neugestaltung von Partitionsschlüsseln stellt eine grundlegende Änderung Ihres Datenmodells dar, die sich auf Ihre gesamte Anwendungsumgebung auswirkt. Bevor Sie mit diesem Ansatz fortfahren, sollten Sie die folgenden wesentlichen Einschränkungen sorgfältig abwägen:

  • Komplexität der Datenmigration: Die Neugestaltung von Partitionsschlüsseln erfordert die Migration aller vorhandenen Daten, was bei großen Tabellen ressourcenintensiv und zeitaufwändig sein kann.

  • Änderungen am Anwendungscode: Der gesamte Anwendungscode, der Lese- oder Schreibvorgänge in die Tabelle durchführt, muss aktualisiert werden, damit er die neue Schlüsselstruktur verwenden kann.

  • Auswirkungen auf die Produktion: Die Migration zu einem neuen Schlüsseldesign erfordert während der Umstellung häufig Ausfallzeiten oder komplexe Dual-Write-Strategien.

Umfassende Anleitungen und Prinzipien zum Design von Partitionsschlüsseln finden Sie unter Bewährte Methoden für das Entwerfen und effektive Verwenden von Partitionsschlüsseln in DynamoDB und Entwerfen von Partitionsschlüsseln zum Verteilen Ihres Workloads in DynamoDB.

Optimieren von GSI-Projektionen

Überprüfen Sie die Abfragemuster Ihrer Anwendung, um genau zu bestimmen, welche Attribute bei der Abfrage des GSI verfügbar sein müssen, und beschränken Sie Ihre Projektionen nur auf diese Attribute. Wenn Sie Attribute aktualisieren, die nicht in einen GSI projiziert werden, findet auf diesem GSI kein Schreibvorgang statt, sodass der Schreibdurchsatzverbrauch bei Aktualisierungen reduziert wird. Diese gezielte Projektionsstrategie optimiert sowohl die Leistung als auch die Kosten und unterstützt zugleich die Abfrageanforderungen Ihrer Anwendung. Beachten Sie, dass die Projektion von weniger Attributen den Schreibkapazitätsverbrauch reduziert, aber möglicherweise zusätzliche Lesevorgänge in der Basistabelle erforderlich macht.

Weitere Informationen zu effizienten Projektionsstrategien finden Sie unter Bewährte Methoden für die Verwendung sekundärer Indexe in DynamoDB.

Weitere Ressourcen

Die folgenden Blog-Beiträge enthalten praktische Beispiele und ausführliche praxisorientierte Informationen zu den in diesem Handbuch behandelten Konzepten: