Kapazitätsskalierung in einem Neptune-Serverless-DB-Cluster - Amazon Neptune

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.

Kapazitätsskalierung in einem Neptune-Serverless-DB-Cluster

Die Einrichtung eines Neptune Serverless DB-Clusters ähnelt der Einrichtung eines normal bereitgestellten Clusters, mit zusätzlicher Konfiguration für minimale und maximale Einheiten für die Skalierung und bei der der Instance-Typ auf db.serverless gesetzt ist. Die Skalierungskonfiguration ist in Neptune Capacity Units (NCUs) definiert, von denen jede aus 2 GiB (Gibibyte) Arbeitsspeicher () zusammen mit der zugehörigen virtuellen Prozessorkapazität (v RAMCPU) und dem Netzwerk besteht. Sie wird als Teil eines ServerlessV2ScalingConfiguration Objekts festgelegt, das wie folgt dargestellt wird: JSON

"ServerlessV2ScalingConfiguration": { "MinCapacity": (minimum NCUs, a floating-point number such as 1.0), "MaxCapacity": (maximum NCUs, a floating-point number such as 128.0) }

Zu jedem Zeitpunkt hat jede Neptune-Writer- oder Reader-Instanz eine Kapazität, die anhand einer Gleitkommazahl gemessen wird, die die Anzahl der NCUs aktuell von dieser Instanz verwendeten darstellt. Sie können die CloudWatch ServerlessDatabaseCapacityMetrik auf Instance-Ebene verwenden, um herauszufinden, wie viele NCUs eine bestimmte DB-Instance derzeit verwendet, und anhand der NCUUtilizationMetrik herausfinden, wie viel Prozent ihrer maximalen Kapazität die Instance verwendet. Beide Metriken sind auch auf DB-Cluster-Ebene verfügbar, um die durchschnittliche Ressourcenauslastung für den gesamten DB-Cluster anzuzeigen.

Wenn Sie einen Neptune Serverless DB-Cluster erstellen, legen Sie sowohl die minimale als auch die maximale Anzahl von Neptune-Kapazitätseinheiten (NCUs) für alle serverlosen Instances fest.

Der NCU Mindestwert, den Sie angeben, legt die kleinste Größe fest, auf die eine serverlose Instance in Ihrem DB-Cluster schrumpfen kann. Ebenso legt der NCU Maximalwert die größte Größe fest, auf die eine serverlose Instance wachsen kann. Der höchste NCU Maximalwert, den Sie festlegen können, ist 128,0NCUs, und der niedrigste Mindestwert ist 1,0. NCUs

Neptune verfolgt kontinuierlich die Auslastung jeder Neptune Serverless-Instanz, indem es deren Nutzung von Ressourcen wie CPU Speicher und Netzwerk überwacht. Die Last wird durch die Datenbankoperationen Ihrer Anwendung, durch die Hintergrundverarbeitung für den Server und durch andere Verwaltungsaufgaben generiert.

Wenn die Auslastung einer Serverless-Instance die Grenze der aktuellen Kapazität erreicht oder wenn Neptune andere Leistungsprobleme feststellt, wird die Instance automatisch skaliert. Wenn die Auslastung der Instance abnimmt, wird die Kapazität auf die konfigurierten Mindestkapazitätseinheiten herunterskaliert, wobei CPU die Kapazität vor dem Arbeitsspeicher freigegeben wird. Diese Architektur ermöglicht die kontrollierte Freigabe von Ressourcen nach unten und bewältigt effektiv Nachfrageschwankungen.

Sie können dafür sorgen, dass eine Reader-Instance zusammen mit der Writer-Instance skaliert oder unabhängig skaliert wird, indem Sie ihre Promotion-Stufe festlegen. Reader-Instances der Upgrade-Stufen 0 und 1 werden gleichzeitig mit dem Writer skalieren, sodass sie die richtige Kapazität dimensioniert sind, um die Workload des Writers im Falle eines Failovers schnell zu übernehmen. Die Leser der Aufstiegsstufen 2 bis 15 skalieren unabhängig von der Autoren-Instance und voneinander.

Wenn Sie Ihren Neptune-DB-Cluster als Multi-AZ-Cluster erstellt haben, um eine hohe Verfügbarkeit zu gewährleisten, skaliert Neptune Serverless alle Instances mit der Datenbanklast AZs nach oben und unten. Sie können die Promotion-Stufe einer Reader-Instance in einer sekundären AZ auf 0 oder 1 setzen, sodass sie zusammen mit der Kapazität der Writer-Instance in der primären AZ nach oben und unten skaliert wird, sodass sie jederzeit bereit ist, die aktuelle Workload zu übernehmen.

Anmerkung

Der Speicher für einen Neptune-DB-Cluster besteht aus sechs Kopien all Ihrer Daten, verteilt auf drei, unabhängig davonAZs, ob Sie den Cluster als Multi-AZ-Cluster erstellt haben oder nicht. Die Speicherreplikation wird vom Speichersubsystem abgewickelt und wird von Neptune Serverless nicht beeinflusst.

Auswahl eines maximalen Kapazitätswerts für einen Neptune Serverless DB-Cluster

Der kleinste Wert, den Sie für die Mindestkapazität festlegen können, ist. 1.0 NCUs

Achten Sie darauf, dass der Mindestwert nicht unter dem liegt, was Ihre Anwendung für einen effizienten Betrieb benötigt. Ein zu niedriger Wert kann bei bestimmten speicherintensiven Workloads zu einer höheren Timeout-Rate führen.

Wenn Sie den Mindestwert so niedrig wie möglich festlegen, können Sie Geld sparen, da Ihr Cluster bei geringer Nachfrage nur minimale Ressourcen verbraucht. Wenn Ihre Workload jedoch stark schwankt, von sehr niedrig bis sehr hoch, sollten Sie das Minimum höher ansetzen, da durch ein höheres Minimum Ihre Neptune Serverless-Instances schneller skaliert werden können.

Der Grund dafür ist, dass Neptune Skalierungsschritte auf der Grundlage der aktuellen Kapazität wählt. Wenn die aktuelle Kapazität niedrig ist, wird Neptune zunächst langsam hochskalieren. Wenn das Minimum höher ist, beginnt Neptune mit einem größeren Skalierungsschritt und kann daher schneller hochskalieren, um einem starken plötzlichen Anstieg der Workload gerecht zu werden.

Auswahl eines maximalen Kapazitätswerts für einen Neptune Serverless DB-Cluster

Der größte Wert, den Sie für die maximale Kapazität festlegen können 128.0NCUs, ist, und der kleinste Wert, den Sie für die maximale Kapazität festlegen können, ist 2.5NCUs. Der von Ihnen festgelegte maximale Kapazitätswert muss mindestens so groß sein wie der von Ihnen festgelegte Mindestkapazitätswert.

Als allgemeine Regel gilt, dass der Maximalwert hoch genug sein sollte, um die Spitzenlast zu bewältigen, der Ihre Anwendung voraussichtlich ausgesetzt sein wird. Ein zu niedriger Wert kann bei bestimmten speicherintensiven Workloads zu einer höheren Timeout-Rate führen.

Wenn Sie den Maximalwert so hoch wie möglich festlegen, hat dies den Vorteil, dass Ihre Anwendung wahrscheinlich auch die unerwartetsten Workloads bewältigen kann. Der Nachteil besteht darin, dass Sie nicht mehr in der Lage sind, die Ressourcenkosten vorherzusagen und zu kontrollieren. Ein unerwarteter Anstieg des Bedarfs kann am Ende viel mehr kosten, als Ihr Budget erwartet hat.

Der Vorteil eines sorgfältig ausgewählten Maximalwerts besteht darin, dass Sie damit Spitzennachfragen decken und gleichzeitig die Rechenkosten von Neptune begrenzen können.

Anmerkung

Durch Ändern des Kapazitätsbereichs eines Neptune Serverless DB-Clusters können sich die Standardwerte einiger Konfigurationsparameter ändern. Neptune kann einige dieser neuen Standardeinstellungen sofort anwenden, aber einige der dynamischen Parameteränderungen werden erst nach einem Neustart wirksam. Status pending-reboot gibt an, dass ein Neustart erforderlich ist, um einige Parameteränderungen anzuwenden.

Verwenden Sie Ihre bestehende Konfiguration, um die Anforderungen an Serverless abzuschätzen

Wenn Sie in der Regel die DB-Instance-Klasse Ihrer bereitgestellten DB-Instances ändern, um eine außergewöhnlich hohe oder niedrige Workload zu bewältigen, können Sie diese Erfahrung nutzen, um eine grobe Schätzung des entsprechenden Neptune Serverless-Kapazitätsbereichs vorzunehmen.

Schätzen Sie die beste Einstellung für die Mindestkapazität

Sie können das, was Sie über Ihren bestehenden Neptune-DB-Cluster wissen, anwenden, um abzuschätzen, welche Einstellung für die Serverless-Mindestkapazität am besten geeignet ist.

Wenn Ihr bereitgestellter Workload beispielsweise Speicheranforderungen hat, die für kleine DB-Instance-Klassen wie T3 oder zu hoch sindT4g, wählen Sie eine NCU Mindesteinstellung, die Speicherplatz bietet, der mit einer R5 oder R6g DB-Instance-Klasse vergleichbar ist.

Oder nehmen Sie an, dass Sie die DB-Instance-Klasse db.r6g.xlarge verwenden, wenn Ihr Cluster eine geringe Workload hat. Diese DB-Instance-Klasse hat 32 GiB Arbeitsspeicher, sodass Sie eine NCU Mindesteinstellung von 16 angeben können, um serverlose Instances zu erstellen, die auf ungefähr dieselbe Kapazität herunterskaliert werden können (jede NCU entspricht etwa 2 GiB Arbeitsspeicher). Wenn Ihre db.r6g.xlarge-Instance manchmal nicht ausgelastet ist, können Sie einen niedrigeren Wert angeben.

Wenn Ihre Anwendung am effizientesten arbeitet, wenn Ihre DB-Instances eine bestimmte Datenmenge im Speicher oder im Puffercache aufnehmen können, sollten Sie eine NCU Mindesteinstellung angeben, die groß genug ist, um ausreichend Speicher dafür bereitzustellen. Andernfalls könnten Daten aus dem Puffer-Cache entfernt werden, wenn die Serverless-Instances herunterskaliert werden, und müssen im Laufe der Zeit wieder in den Puffer-Cache gelesen werden, wenn Instances wieder hochskaliert werden. Wenn die Menge an I/O, um Daten zurück in den Puffercache zu bringen, beträchtlich ist, könnte es sich lohnen, einen höheren NCU Mindestwert zu wählen.

Wenn Sie feststellen, dass Ihre Serverless-Instances die meiste Zeit mit einer bestimmten Kapazität ausgeführt werden, ist es sinnvoll, die Mindestkapazität etwas niedriger festzulegen. Neptune Serverless kann am effektivsten abschätzen, wie viel und wie schnell hochskaliert werden muss, wenn die aktuelle Kapazität nicht deutlich niedriger als die erforderliche Kapazität ist.

In einer gemischten Konfiguration mit einem bereitgestellten Writer und Neptune Serverless-Readern skalieren die Reader nicht mit dem Writer. Da sie unabhängig skalieren, kann das Festlegen einer geringen Mindestkapazität für sie zu einer übermäßigen Replikationsverzögerung führen. Sie verfügen möglicherweise nicht über ausreichend Kapazität, um mit den Änderungen Schritt zu halten, die der Autor bei einer sehr schreibintensiven Workload vornimmt. Legen Sie in diesem Fall eine Mindestkapazität fest, die mit der Schreibkapazität vergleichbar ist. Wenn Sie die Replikatverzögerung bei Readern beobachten, die sich in den Hochstufungsstufen 2 bis 15 befinden, sollten Sie die Mindestkapazitätseinstellung für Ihren Cluster ggf. erhöhen.

Schätzen Sie die beste Einstellung für die Höchstkapazität

Sie können das, was Sie über Ihren bestehenden Neptune-DB-Cluster wissen, anwenden, um abzuschätzen, welche Einstellung für die Serverless-Höchstkapazität am besten geeignet ist.

Angenommen, Sie verwenden die DB-Instance-Klasse db.r6g.4xlarge, wenn Ihr Cluster eine hohe Workload hat. Diese DB-Instance-Klasse hat 128 GiB Arbeitsspeicher, sodass Sie eine maximale NCU Einstellung von 64 angeben können, um äquivalente Neptune Serverless-Instances einzurichten (jede NCU entspricht etwa 2 GiB Arbeitsspeicher). Sie können einen höheren Wert angeben, damit die DB-Instance weiter skaliert wird, falls Ihre db.r6g.4xlarge-Instance die Workload nicht immer bewältigen kann.

Wenn unerwartete Workload-Spitzen selten sind, kann es sinnvoll sein, Ihre maximale Kapazität hoch genug festzulegen, um die Anwendungsleistung auch während dieser Spitzen aufrechtzuerhalten. Auf der anderen Seite möchten Sie möglicherweise eine niedrigere maximale Kapazität festlegen, um den Durchsatz bei ungewöhnlichen Spitzen zu reduzieren, wobei Neptune jedoch Ihre erwarteten Workloads problemlos bewältigen kann, und um die Kosten zu begrenzen.