Wie behebe ich die Fehlermeldung „OOM command not allowed“ für einen ElastiCache für Redis-Cluster-Knoten?

Lesedauer: 3 Minute
0

Ich habe bei der Abfrage meines Amazon ElastiCache für Redis-Cluster-Knoten den Fehler „OOM command not allowed when used memory greater than 'maxmemory'“ erhalten? Wie behebe ich das?

Kurzbeschreibung

Ein OOM-Fehler tritt auf, wenn ein ElastiCache für Redis-Cluster keinen zusätzlichen Speicher freigeben kann.

ElastiCache für Redis implementiert die maxmemory-policy, die für die Parametergruppe des Cache-Knotens festgelegt ist, wenn der Speicherplatz knapp wird. Der Standardwert (volatile-lru) gibt Speicherplatz frei, indem Schlüssel mit einer festgelegten Ablaufzeit (TTL-Wert) gelöscht werden. Wenn ein Cache-Knoten keine Schlüssel mit einem TTL-Wert hat, gibt er stattdessen einen Fehler zurück.

Um diesen Fehler zu beheben und damit Clients keine Fehlermeldungen erhalten, die vom OOM-Befehl nicht erlaubt sind, gehen Sie wie folgt vor:

  • Legen Sie einen TTL-Wert für Schlüssel auf Ihrem Knoten fest.
  • Aktualisieren Sie die Parametergruppe, um einen anderen Parameter maxmemory-policy zu verwenden.
  • Löschen Sie einige vorhandene Schlüssel manuell, um Speicherplatz freizugeben.
  • Wählen Sie einen größeren Knotentyp.

Hinweis: Die genaue Kombination der von Ihnen verwendeten Lösungen hängt von Ihrem speziellen Anwendungsfall ab.

Behebung

Legen Sie einen TTL-Wert für Schlüssel auf Ihrem Knoten fest

Sie können einen TTL-Wert für Schlüssel auf Ihrem Knoten festlegen. Die standardmäßige volatile-lru Speicherverwaltungsrichtlinie löscht dann abgelaufene Schlüssel, um Speicherplatz freizugeben.

Wenn Sie einen TTL-Wert festlegen, können Sie auch die Einstellung volatile-ttl verwenden. Diese Einstellung spart Speicherplatz, indem nur Schlüssel mit festgelegter Ablaufzeit gelöscht werden, beginnend mit den Schlüsseln mit der niedrigsten TTL.

Andere Einstellung maxmemory-policy auswählen

Setzen Sie die maxmemory-policy für eine Cache-Knoten-Parametergruppe auf einen der folgenden Werte:

  • allkeys-lru: Schaffen Sie Platz, indem Sie zuerst Schlüssel löschen, die länger Zeit nicht verwendet wurden.
  • allkeys-random: Schaffen Sie Platz, indem Sie zufällige Schlüssel löschen.
  • volatile-random: Schaffen Sie Platz, indem Sie zufällige Schlüssel mit festgelegtem Ablaufdatum löschen.

Außerdem bietet Redis 4.0 Löschmodi für die am wenigsten verwendeten Elemente (LFU):

  • allkeys-lfu: Schaffen Sie Platz, indem Sie den Schlüssel löschen, auf den am wenigsten zugegriffen wurde.
  • volatile-lfu: Schaffen Sie Platz, indem Sie Schlüssel mit festgelegtem Ablaufdatum löschen, und beginnen Sie mit dem Schlüssel, auf den am wenigsten zugegriffen wurde.

Löschen Sie vorhandene Schlüssel, um Speicherplatz freizugeben

Mit dem DEL-Befehl können Sie vorhandene Schlüssel löschen, um Speicherplatz freizugeben. Weitere Informationen finden Sie unter Del key [key...] auf der Website redis.io.

Wichtig: Durch das Löschen vorhandener Schlüssel werden OOM-Fehler vorübergehend behoben. Überdenken Sie unbedingt auch Ihre Speicherverwaltungsstrategie.

Wählen Sie einen größeren Knotentyp

Jeder Knotentyp hat eine andere Menge an verfügbarem Speicher. Die Menge des verfügbaren Speichers auf einem Knoten kann nicht geändert werden. Sie können aber einen größeren Knotentyp mit mehr Speicherplatz verwenden.

Wichtig: Durch die Verwendung eines größeren Knotentyps werden OOM-Fehler vorübergehend behoben. Überdenken Sie unbedingt auch Ihre Speicherverwaltungsstrategie.


Verwandte Informationen

Redis 4.0.10 Parameteränderungen

Redis-Knotentyp spezifische Parameter

Löschung von Schlüsseln — Überblick über die Richtlinien zur Löschung der Schlüssel von Redis (LRU, LFU usw.)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren