Wie kann ich allgemeine Fehler in Databases for Redis vermeiden?

Databases for Redis ist eine speicherinterne Datenbank. Es unterscheidet sich von traditionellen persistenten Datenbanken darin, wie es Daten akzeptiert, verarbeitet und speichert. In den folgenden Informationen werden häufig auftretende Fehler, einige Ursachen für diese Fehler und die Lösungen, die Sie anwenden können, hervorgehoben, um diese Fehler zu beheben.

Fehler: Nachricht Connection to master lost

Databases for Redis arbeitet mit zwei Mitgliedern (Master und Replikat) und drei Sentinels. Die folgenden Ursachen können die Ursache der Nachricht connection to master lost sein:

a. Aufgrund geringerer Ein-/Ausgabeoperationen pro Sekunde (IOPS) ist der Master ausgelastet und reagiert nicht auf Sentinels, was zu dieser Fehlermeldung in den Plattformprotokollen führt.

b. Aufgrund der Netzlatenz können Sentinels nicht mit dem Master kommunizieren.

c. Geplante Wartungsaktivitäten.

d. Nebenversionsupgrades.

Lösungen

Versuchen Sie die folgenden Lösungen, um den Fehler zu beheben:

a. Erhöhen Sie die Plattengröße. 1 GB entspricht 10 IOPS.

b. Zur isolierten Berechnung für die dedizierte Ressourcenzuordnung verschieben.

c. Vergrößern Sie den Arbeitsspeicher.

d. RETRY-Logik ist erforderlich. Stellen Sie daher sicher, dass dies implementiert ist.

e. Das Replikat wird nach einigen Sekunden automatisch zum Master hochgestuft.

Die in dieser Implementieren Sie memory eviction-oder TTL-Richtlinien in Ihrer Redis-Instanz.

IBM® Cloud Databases führt keine Aktivitäten auf dem Master-Knoten aus. Bei Bedarf werden alle Aktivitäten auf dem Replikatknoten abgeschlossen, der dann zum Master hochgestuft wird. Datenbanken warten 30 Sekunden auf die Suche nach dem Masterknoten, bevor die Replikathochstufung erfolgt.

Fehler: Asynchronous AOF fsync is taking too long (disk is busy?)

AOF ist eine Datei, die nur angehängt wird. Dies ist das Protokoll, das auf die persistente Platte Redis geschrieben wird, wenn die persistente Einstellung aktiviert ist.

Redis verwendet AOF- und RDB-Dateien zum Schreiben des Protokolls und RDB zum Erstellen von Snapshots.

Es gibt folgende Gründe, warum dieser Fehler angezeigt wird:

a. Aufgrund unzureichender IOPS kann Redis nicht auf Platte schreiben.

b. Es kann eine Databases for Redis-Sicherung geben, die gleichzeitig mit Ihrem Batch ausgeführt wird.

c. Ihre Anwendung könnte unbekannte API-Aufrufe an die Redis-Instanz absetzen.

Außer PSYNC, das für Metriken verwendet wird, fordern wir keine andere API in Ihrer Instanz an.

Lösungen:

Versuchen Sie die folgenden Lösungen, um den Fehler zu beheben:

a. Erhöhen Sie die Plattengröße. Eine Ballparkempfehlung ist um 30% höher als das erwartete Volumen.

b. Wenn Redis die maximale Kapazität erreicht, teilen Sie eine einzelne Redis-Instanz in mehrere Instanzen auf und passen Sie Ihre Anwendungsarchitektur an.

c. Inaktivieren Sie die Persistenz, wenn sie nicht erforderlich ist. Wechseln Sie stattdessen in den Cachemodus.

Für die Plattengröße kann kein Scale-down durchgeführt werden, aber es kann Speicher verwendet werden. Da es sich bei Redis um einen In-Memory-Datenspeicher handelt, empfehlen wir Ihnen, die Größe Ihrer laufenden Daten zu bewerten, bevor Sie den Speicher Ihrer Instanz verkleinern, da eine erhebliche Reduzierung zu Fehlern führen kann.

Fehler: Skalieren einer Instanz blockiert oder dauert länger als erwartet

Mit IBM Cloudkönnen Sie Ihre Instanz skalieren oder ihre Größe ändern, wenn Ihre Datenanforderungen wachsen. Wir bieten automatische Skalierung und manuelle Skalierung über die Benutzerschnittstelle, CLI und APIs. Achten Sie jedoch darauf, die Größe Ihrer Instanz zu ändern. Wenn die Skalierung länger als erwartet dauert, kann dies eine der folgenden Ursachen haben:

a. Ihre Instanz befindet sich bereits in der größten Instanz (cores*rams) und es ist kein größerer Cluster verfügbar, in den Ihre Workload verschoben werden kann. In diesem Fall wird ein neuer Cluster gebildet und Ihre Instanz verschoben, was einige Minuten dauern kann.

b. Sie haben den Speicher drastisch reduziert (z. B. von 16 GB RAM auf 10 GB RAM). Ihre Datenspeichergröße (Platte) ist jedoch höher, z. B. 11 GB. In diesen Fällen ist nicht genügend Speicherplatz im Arbeitsspeicher vorhanden, um Daten von Platte zu lesen, und die Formation kann blockiert werden.

Lösungen:

Versuchen Sie die folgenden Lösungen, um den Fehler zu beheben:

a. Redis ist ein Einzelthread für seine primären Operationen. Es wird erwartet, dass Sie weniger Kerne und mehr Speicher verwenden. Dies erhöht die Wahrscheinlichkeit der Verfügbarkeit eines Clusters.

b. Vergrößern Sie Ihren Arbeitsspeicher und Ihre Festplatte auf der Basis Ihrer E/A-Anforderungen.

c. Reduzieren Sie Ihren RAM nicht drastisch. Es wird empfohlen, schrittweise zu dekrementieren.

Vergewissern Sie sich, dass für Redis genügend Speicherplatz zur Verfügung steht, damit es die ihm eigenen Prozesse durchführen kann.

Fehler: READONLY Sie können nicht gegen eine schreibgeschützte Replik schreiben

Databases for Redis verfügt über zwei Knoten: Master und Replikat. Benutzer können nur eine Verbindung zum Masterknoten herstellen und der Replikatknoten wird verwendet, um die Hochverfügbarkeit sicherzustellen, die für Benutzer im Allgemeinen nicht zugänglich ist. Wie bei jeder fernen Verbindung kann es jedoch zu einem Switchover kommen, bei dem das Replikat zum Master hochgestuft wird. Wenn die Knoten ordnungsgemäß konfiguriert sind, kann es zu einem kurzzeitigen blip im Service kommen und es werden keine weiteren Auswirkungen erwartet.

a. Aufgrund der geringeren IOPS ist der Master beschäftigt und antwortet nicht auf die Sentinels, was zu dieser Fehlermeldung in den Plattformprotokollen führt.

b. Aufgrund der Netzlatenz können Sentinels nicht mit dem Master kommunizieren.

c. Geplante Wartung.

d. Nebenversionsupgrades.

Lösungen:

Versuchen Sie die folgenden Lösungen, um den Fehler zu beheben:

a. Schließen Sie Wiederholungslogik und Verbindungswiederholungslogik in Ihr Anwendungsdesign ein. Sie können Bibliotheken wie ioredis und noderedis verwenden. Weitere Details finden Sie im Blogbeitrag zur Fehlererkennung und -behandlung mit Redis.

b. Bestimmte Clients haben integrierte Logik für Wiederholung und Wiederherstellung der Verbindung. Sie können auch diese Clients nutzen.

c. Die Wiederholungs-und Verbindungswiederholungslogik wird für alle Cloud-Services dringend empfohlen.