View a markdown version of this page

Stellen Sie sicher, dass Sie über genügend Speicher verfügen, um einen Valkey- oder Redis OSS-Snapshot zu erstellen - Amazon ElastiCache

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.

Stellen Sie sicher, dass Sie über genügend Speicher verfügen, um einen Valkey- oder Redis OSS-Snapshot zu erstellen

Schnappschüsse und Synchronisationen

Valkey und Redis OSS unterstützen Snapshots und Synchronisationen mithilfe eines forklesslosen Speicherprozesses, der es Ihnen ermöglicht, einen größeren Teil Ihres Speichers der Nutzung Ihrer Anwendung zuzuweisen, ohne dass bei Synchronisationen und Speichervorgängen eine erhöhte Swap-Auslastung entsteht.

Wenn Sie mit ElastiCache für Redis OSS arbeiten, ruft Redis OSS in einer Reihe von Fällen einen Schreibbefehl im Hintergrund auf:

  • Beim Erstellen eines Snapshots für eine Sicherung

  • Beim Synchronisieren von Replikaten mit dem primären Cluster in einer Replikationsgruppe

  • Wenn Sie die Funktion zum Anhängen von Dateien (AOF) für Redis OSS aktivieren.

  • Wenn ein Replikat zum Primärreplikat heraufgestuft wird (was zu einer Synchronisierung führt). primary/replica

Immer wenn Redis OSS einen Schreibvorgang im Hintergrund ausführt, muss ausreichend Arbeitsspeicher verfügbar sein, um den Prozess-Overhead abzudecken. Wenn nicht genügend Arbeitsspeicher verfügbar ist, schlägt der Vorgang fehl. Aus diesem Grund ist es wichtig, bei der Erstellung Ihres Redis OSS-Clusters einen Knoteninstanztyp zu wählen, der über ausreichend Arbeitsspeicher verfügt.

Hintergrund: Schreibvorgang und Speichernutzung mit Valkey und Redis OSS

Immer wenn ein Schreibprozess im Hintergrund aufgerufen wird, forken Valkey und Redis OSS seinen Prozess (denken Sie daran, dass diese Engines Single-Thread-Engines sind). Ein Fork speichert Ihre Daten auf der Festplatte in einer Redis OSS .rdb-Snapshot-Datei. Die andere Vergabelung führt alle Lese- und Schreibvorgänge durch. Um sicherzustellen, dass Ihr Snapshot ein zeitpunktbezogener Snapshot ist, werden alle Aktualisierungen und Zusätze in einen anderen Bereich des verfügbaren Arbeitsspeichers separat vom Datenbereich geschrieben.

Solange genügend Arbeitsspeicher zum Aufzeichnen aller Schreibvorgänge verfügbar ist, während die Daten dauerhaft auf dem Datenträger erhalten bleiben, treten keine Probleme aufgrund von Speichermangel auf. Wenn vermehrt Probleme aufgrund von Speichermangel auftreten, treffen beliebige der folgenden Situationen ein:

  • Ihre Anwendung führt viele Schreibvorgänge aus und benötigt daher eine große Menge an verfügbarem Arbeitsspeicher zum Akzeptieren neuer oder aktualisierter Daten.

  • Es ist sehr wenig Arbeitsspeicher zum Schreiben neuer oder aktualisierter Daten verfügbar.

  • Die dauerhafte Erhaltung eines großen Datensatzes auf der Festplatte dauert eine lange Zeit und erfordert eine große Anzahl von Schreibvorgängen.

Das folgende Diagramm veranschaulicht die Speichernutzung beim Ausführen eines Hintergrundschreibvorgangs.

Abbildung: Diagramm der Speichernutzung während eines Hintergrundschreibvorgangs.

Informationen zu den Auswirkungen einer Sicherung auf die Leistung finden Sie unter Auswirkungen von Backups knotenbasierter Cluster auf die Leistung.

Weitere Informationen darüber, wie Valkey und Redis OSS Snapshots erstellen, finden Sie unter. http://valkey.io

Weitere Informationen zu Regionen und Availability Zones finden Sie unter Auswahl von Regionen und Verfügbarkeitszonen für ElastiCache.

Vermeidung von Speichermangel beim Ausführen eines Hintergrundschreibvorgangs

Wenn im Hintergrund ein Schreibprozess wie BGSAVE oder aufgerufen BGREWRITEAOF wird, muss mehr Speicher verfügbar sein, als durch Schreibvorgänge während des Vorgangs verbraucht wird, um zu verhindern, dass der Prozess fehlschlägt. Im schlimmsten Fall wird während des Schreibvorgangs im Hintergrund jeder Datensatz aktualisiert und einige neue Datensätze werden dem Cache hinzugefügt. Aus diesem Grund empfehlen wir, für Valkey und Redis OSS den Wert reserved-memory-percent auf 25 (25 Prozent) einzustellen.

Der Wert maxmemory gibt den für die Daten und den Betriebsaufwand verfügbaren Arbeitsspeicher an. Da der Parameter reserved-memory in der Standardparametergruppe nicht geändert werden kann, müssen Sie eine benutzerdefinierte Parametergruppe für den Cluster erstellen. Der Standardwert für reserved-memory ist 0, was es Redis OSS ermöglicht, den gesamten Maxmemory mit Daten zu verbrauchen, sodass möglicherweise zu wenig Speicher für andere Zwecke übrig bleibt, z. B. für einen Schreibvorgang im Hintergrund. Informationen zu maxmemory-Werten nach Knoten-Instance-Typ finden Sie unter Redis OSS-Knotentyp-spezifische Parameter.

Sie können den reserved-memory Parameter auch verwenden, um den Speicherverbrauch der Box zu reduzieren.

Weitere Informationen zu Valkey und den Redis-specific Parametern in finden Sie ElastiCache unterValkey- und Redis OSS-Parameter.

Weitere Informationen zum Erstellen und Ändern von Parametergruppen finden Sie unter ElastiCache Parametergruppe erstellen und Modifizieren einer ElastiCache Parametergruppe.