Wie wähle ich den richtigen Instance-Typ und die richtige Größe für meinen Cluster für ElastiCache für Redis?

Letzte Aktualisierung: 27.06.2022

Wie wähle ich eine Knotengröße für Amazon ElastiCache für Redis und Cluster-Konfiguration für meine Workloads aus, um die beste Leistung zu erzielen?

Kurzbeschreibung

Beachten Sie bei der Auswahl der Knotengröße für Ihren ElastiCache-Cluster und Ihre Cluster-Konfiguration Folgendes:

  • Wie viel CPU-Rechenleistung benötige ich?
  • Wie viele Daten muss ich speichern?
  • Kann die gewählte Knotengröße den erwarteten Netzwerkverkehr bewältigen?
  • Welchen Cluster-Modus sollte ich wählen?

Auflösung

Wie viel CPU-Rechenleistung benötige ich?

Knotenoptionen überprüfen

Überprüfen Sie die verfügbaren Knotenoptionen. Da es sich bei Redis um einen Single-Thread-Prozess handelt, steigt die Leistung nicht, wenn Sie Ihrem Knoten CPUs hinzufügen. Die Leistung des einzelnen CPU-Kerns auf dem Knoten bestimmt die Leistung. Jeder Knotentyp hat seine eigene Basisleistung. Die Knotentypen der aktuellen Generation bieten im Vergleich zu früheren Versionen mehr Speicher und Rechenleistung zu geringeren Kosten. Zum Beispiel bieten M5- und R5-Instances im Vergleich zu M4 und R4 eine bessere Leistung zu geringeren Kosten.

Ihre Knoten benchmarken

Es ist eine bewährte Methode, Ihre Knoten zu benchmarken, um eine Schätzung zu erhalten, wie gut die Instance bei der von Ihnen erwarteten Workload funktioniert. Verwenden Sie dazu das Redis-Benchmark-Dienstprogramm. Informationen zu grundlegenden Empfehlungen finden Sie unter Fünf Workload-Merkmale, die bei der richtigen Dimensionierung von Amazon-ElastiCache-Redis-Clustern zu berücksichtigen sind.

Stellen Sie bei der Durchführung der Benchmark-Tests die Workload Ihres Anwendungsdatenverkehrs nach, einschließlich der Anzahl der Anfragen, der Schlüsselverteilung und der Elementgröße. Überwachen Sie die Amazon-CloudWatch-Metriken für Speichernutzung, Prozessorauslastung, Cache-Treffer und Cache-Fehlschläge. Möglicherweise stellen Sie fest, dass Ihr Cluster nicht die gewünschte Trefferquote aufweist oder dass Schlüssel zu oft vertrieben werden. Wählen Sie in diesem Fall eine andere Knotengröße mit größeren CPU- und Speicherspezifikationen.

Da Redis single-threaded ist, multiplizieren Sie die gemeldete CPU-Nutzung mit der Anzahl der CPU-Kerne, um die tatsächliche Nutzung zu erhalten. Zum Beispiel ist eine Vier-Kern-CPU mit einer Nutzungsrate von 20 Prozent tatsächlich der eine Kern, den Redis bei einer Auslastung von 80 Prozent ausführt.

Wie viele Daten werde ich speichern müssen?

Um den Speicherbedarf abzuschätzen, multiplizieren Sie die durchschnittliche Artikelgröße, die zwischengespeichert werden soll, mit der Anzahl der Elemente, die sich gleichzeitig im Cache befinden. Um die Elementgröße abzuschätzen, serialisieren Sie Ihre Cache-Elemente, zählen Sie die Zeichen und dividieren Sie dann diese Summe durch die Anzahl der Shards in Ihrem Cluster.

Beachten Sie den Gruppenparameter reserved-memory oder reserved-memory-percent Ihrer Redis-Version. Dieser Parameter reserviert Speicher für nicht-datenbezogene Zwecke wie Systemsicherungen und allgemeine Systemstabilität. Standardmäßig ist dieser Wert auf 25 % Ihres maximalen Speichers eingestellt. Berücksichtigen Sie dies bei der Bestimmung, welche Größe für Ihre Daten ausreicht.

Zum Beispiel hat cache.r4.large 12,3 GB verfügbaren Speicher zur Verwendung. Da Ihr reservierter Speicher auf 25 % eingestellt ist, speichert der Knoten bis zu 9,2 GB (12,3 x 75 %) an Daten. Der Rest ist anderen Redis-Funktionen und der Systemstabilität vorbehalten.

Kann der Knotentyp, den ich ausgewählt habe, den erwarteten Netzwerkverkehr verarbeiten?

Stellen Sie sicher, dass der Knotentyp, den Sie auswählen, die Menge der übertragenen Daten verarbeiten kann, ohne das Netzwerkmaximum zu erreichen.

Um den maximalen Durchsatz auf einem ElastiCache-Knoten zu ermitteln, führen Sie einen Benchmark auf einem ähnlichen Amazon Elastic Compute Cloud (Amazon EC2)-Knoten aus.

Führen Sie zum Beispiel für einen cache.m4.large-Knoten Ihre Tests auf einer EC2-m4.large-Instance aus. Durch Ausführen dieses Tests wird der theoretische maximale Durchsatz für Ihren Knoten ermittelt. Es enthält auch eine Schätzung der Bandbreite, die Sie zwischen Ihrem Client und Ihrem Redis-Knoten übertragen können. Ein häufiger Nebeneffekt beim Maximieren Ihres Netzwerks ist eine flache Linie im Bandbreitendiagramm, die anzeigt, dass Sie Ihre Hardware voll auslasten. Anweisungen zur Verwendung von iperf3 zur Messung der Netzwerkleistung zwischen Instances finden Sie unter Wie vergleiche ich den Netzwerkdurchsatz zwischen Amazon-EC2-Linux-Instances in derselben Amazon VPC?

Da ElastiCache-Knoten ihren EC2-Gegenstücken ähnlich sind, sollten Sie sich die für jeden Instance-Typ aufgelistete Netzwerkleistung ansehen. Wenn Sie den Netzwerkdurchsatz für Ihren Knoten maximieren möchten, müssen Sie möglicherweise die nächste Knotengröße auswählen, um eine bessere Netzwerkleistung zu erzielen. Zum Beispiel hat eine m4.large-Instance ein moderates Netzwerk. Wenn Ihre Workload jedoch Ihr Netzwerk auslastet und Sie eine schlechte Leistung erzielen, identifizieren Sie einen neuen Knotentyp mit einer besseren Netzwerkleistung. Eine bessere Netzwerkleistung wird möglicherweise als Hoch oder 10 Gigabit in der Spalte Netzwerkleistung auf der Preisseite aufgeführt.

Beachten Sie, dass die Netzwerkleistung auch für den Client gilt. Wenn Ihr Client ein t2.micro mit niedriger bis mittlerer Netzwerkleistung ist und Sie Daten auf eine m4.10xlarge übertragen, dann maximieren Sie zuerst den Netzwerkdurchsatz auf Ihrem Client.

Welcher Clustermodus sollte gewählt werden?

Die Wahl des richtigen Modus für Ihre Anwendungs-Workload hängt vom Datenverkehr ab:

Wenn die primäre Last auf Ihrem Cluster aus Anwendungen besteht, die Daten lesen, können Sie einen Redis-Cluster (Clustermodus deaktiviert) wählen. Skalieren Sie dann Ihren Cluster, um mehr Leseoperationen zu unterstützen, indem Sie Lese-Replikate hinzufügen. Es gibt maximal 5 Lese-Replikate. Beachten Sie, dass Cluster mit deaktiviertem Clustermodus nur einen Shard haben. Daher muss der Knotentyp groß genug sein, um alle Daten des Clusters aufzunehmen, plus den erforderlichen Overhead.

Wenn die Last auf Ihrem Cluster schreibintensiv ist und Ihre Schreib-Workload das übersteigt, was ein Knoten bieten kann, verwenden Sie einen Redis-Cluster (Clustermodus aktiviert). Cluster mit aktiviertem Clustermodus verteilen Ihre Schlüssel auf mehrere Primärknoten. Die Schreibleistung wird also auf mehrere Knoten statt auf einen einzelnen Knoten aufgeteilt.

Wenn Sie eine große Workload haben, die eine extreme Leistung erfordert, verwenden Sie einen Cluster im Cluster-Modus mit mehreren Shards und mehreren Lese-Replikaten für jeden Shard. Sie können zum Beispiel einen Cluster mit 15 Shards und 5 Replikaten pro Primärknoten erstellen.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?