Sicherstellen, dass Sie über genügend Arbeitsspeicher verfügen, um einen Redis OSS-Snapshot zu erstellen - Amazon ElastiCache (Redis OSS)

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.

Sicherstellen, dass Sie über genügend Arbeitsspeicher verfügen, um einen Redis OSS-Snapshot zu erstellen

Redis OSS-Snapshots und Synchronisationen in Version 2.8.22 und höher

Redis OSS 2.8.22 führt einen forkless-Speicherprozess ein, der es Ihnen ermöglicht, mehr Speicherplatz für die Nutzung durch Ihre Anwendung zuzuweisen, ohne dass bei Synchronisationen und Speichervorgängen eine erhöhte Swap-Auslastung entsteht. Weitere Informationen finden Sie unter So werden Synchronisation und Backup implementiert.

Redis OSS-Snapshots und Synchronisationen vor Version 2.8.22

Wenn Sie mit ElastiCache (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 „Nur Dateien anhängen“ (AOF) für Redis OSS aktivieren.

  • Beim Hochstufen eines Replikats zu einem primären (was eine primäre/Replikat-Synchronisierung verursacht).

Immer wenn Redis OSS einen Schreibvorgang im Hintergrund ausführt, müssen Sie über ausreichend verfügbaren Speicher verfügen, um den Prozessaufwand zu bewältigen. 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 auszuwählen, der über ausreichend Speicher verfügt.

Hintergrundschreibvorgang und Speicherverwendung

Immer wenn ein Schreibvorgang im Hintergrund aufgerufen wird, forkt Redis OSS seinen Prozess (denken Sie daran, dass Redis Single-Thread ist). 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 es sich bei Ihrem point-in-time Snapshot um einen Snapshot handelt, werden alle Datenaktualisierungen und Ergänzungen in einen vom Datenbereich getrennten Bereich des verfügbaren Speichers 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 selbst entworfener Cluster auf die Leistung.

Weitere Informationen darüber, wie Redis OSS Snapshots durchführt, finden Sie unter http://redis.io.

Weitere Informationen zu Regionen und Availability Zones finden Sie unter Auswahl von Regionen und Availability Zones.

Vermeidung von Speichermangel beim Ausführen eines Hintergrundschreibvorgangs

Immer wenn ein Schreibvorgang im Hintergrund wie BGSAVE oder aufgerufen BGREWRITEAOF wird, müssen Sie, um zu verhindern, dass der Prozess fehlschlägt, mehr Speicher zur Verfügung haben, als durch Schreibvorgänge während des Vorgangs verbraucht wird. Im schlimmsten Fall wird während des Schreibvorgangs im Hintergrund jeder Redis-OSS-Datensatz aktualisiert und einige neue Datensätze werden dem Cache hinzugefügt. Aus diesem Grund empfehlen wir, den Wert reserved-memory-percent auf 50 (50 Prozent) für Redis OSS-Versionen vor 2.8.22 oder 25 (25 Prozent) für Redis OSS-Versionen 2.8.22 und höher festzulegen.

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 Maximalspeicher 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 reserved-memory Parameter auch verwenden, um den Speicherplatz zu reduzieren, den Redis OSS auf der Box verwendet.

Weitere Informationen zu Redis-spezifischen Parametern finden Sie unter. ElastiCache Redis OSS-spezifische Parameter

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