Auf dieser Seite werden verschiedene Fehlerszenarien erläutert und es wird beschrieben, wie Sie die Fehler beheben können.
Replikationsszenarien
In diesem Abschnitt werden Replikationsprobleme beschrieben, die bei Ihrer Instanz auftreten können.
Wie überwachen Sie Replikationsverzögerungen?
Memorystore for Valkey hat den Messwert /instance/replication/maximum_offset_diff. Mit diesem Messwert wird die maximale Differenz des Replikations-Offsets (in Byte) für einen Knoten in einer primären Instanz überwacht.
Wenn Sie die Differenz des Replikations-Offsets niedrig halten, können Replikate häufiger und kostengünstiger inkrementelle Synchronisierungsvorgänge ausführen als vollständige Synchronisierungsvorgänge.
Wir empfehlen, einen Grenzwert für den Messwert maximum_offset_diff festzulegen. Wenn der Grenzwert überschritten wird, kann Memorystore for Valkey Sie per Benachrichtigung informieren.
Basierend auf dem Knotentyp für Ihre Instanz empfehlen wir, den Schwellenwert so festzulegen:
Wenn der Knotentyp
shared-core-nano,custom-pico,custom-micro,custom-mini,standard-small,highmem-medium,highcpu-mediumoderstandard-largeist, legen Sie den Schwellenwert auf weniger als 64 MB fest.Wenn der Knotentyp
highmem-xlargeoderhighmem-2xlargeist, legen Sie den Schwellenwert auf weniger als 1 GB fest.
Was tun Sie, wenn es eine Replikationsverzögerung zwischen Ihrer primären Instanz und ihren Replikaten gibt?
Wenn die primäre Instanz zu viele Schreibvorgänge hat und die Replikate diese Vorgänge nicht schnell genug replizieren können, kann es zu einer erheblichen Replikationsverzögerung kommen. Um dieses Problem zu beheben, empfehlen wir, die Kapazität der Instanz zu skalieren, indem Sie die Anzahl der Shards für die Instanz erhöhen.
Szenarien für die CPU-Nutzung
In diesem Abschnitt werden Probleme mit der CPU-Nutzung erläutert, die bei Ihrer Instanz auftreten können.
Was tun Sie, wenn der Ausgabepuffer Ihrer Instanz keinen Speicherplatz mehr hat?
Wenn der Ausgabepuffer Ihrer Memorystore for Valkey-Instanz voll ist, gehen Sie so vor:
- Legen Sie für den Parameter
maxmemoryeinen kleineren Wert fest. - Verwenden Sie die
allkeys-lru-Richtliniemaxmemory.
Wenn der Speicher Ihrer Instanz voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Memorystore for Valkey entfernt, um Platz für den Schreibvorgang zu schaffen. Dieser Vorgang basiert auf der maxmemory-Richtlinie Ihrer Instanz. Mit der allkeys-lru-Richtlinie werden die am weitesten in der Vergangenheit verwendeten (LRU) Schlüssel aus dem gesamten Keyset entfernt.
Wir empfehlen, die maxmemory und den verwendeten Arbeitsspeicher Ihrer Instanz im Blick zu behalten. So können Sie feststellen, ob Ihre Instanz die bereitgestellte Instanzkapazität erreicht.
Wenn Sie den Wert für den Parameter maxmemory verringern, haben Sie außerdem mehr Spielraum für den Overhead.
Warum fehlen möglicherweise externe Messwerte für Ihre Instanz?
Wenn die CPU-Auslastung Ihrer Instanz hoch ist oder die Ressourcen der Instanz erschöpft sind (z. B. durch zu viele Verbindungen), kann es sein, dass sich die Instanz nicht richtig verhält und externe Messwerte fehlen.
Wie isolieren Sie die Quelle der Latenz Ihrer Instanz?
Wenn Sie feststellen möchten, ob die Latenz, die Sie feststellen, von Ihrer Instanz, Ihrer Clientanwendung oder Ihrer Netzwerkumgebung stammt, verwenden Sie das Tool valkey-cli, um einen kontinuierlichen Latenztest auszuführen.
So isolieren Sie die Quelle der Latenz Ihrer Instanz:
Stellen Sie eine Verbindung zu einer Compute Engine-VM her, die sich in derselben Region und im selben VPC-Netzwerk wie Ihre Instanz befindet.
Wenn es noch nicht installiert ist, installieren Sie das
valkey-cli-Tool auf Ihrer VM.Führen Sie für Debian- oder Ubuntu-basierte VMs den folgenden Befehl aus:
sudo apt-get install valkey-toolsFühren Sie für RHEL- oder CentOS-basierte VMs den folgenden Befehl aus:
sudo yum install valkey-tools
Führen Sie den folgenden Befehl aus, um die Latenz der Instanz in Millisekunden zu messen:
redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
Wenn für Ihre Instanz die Verschlüsselung während der Übertragung verwendet wird, hängen Sie das Flag
--tlsan und geben Sie die Zertifizierungsstellen (Certificate Authorities, CAs) an, mit denen eine Verbindung hergestellt werden soll.Ersetzen Sie die folgenden Werte:
- ENDPOINT_ADDRESS: die IP-Adresse des Endpunkts Ihrer Instanz.
- PORT: die Portnummer, die für den Endpunkt Ihrer Instanz reserviert ist. Normalerweise ist das die Portnummer 6379.
Lassen Sie den Befehl einige Minuten lang ausführen. Das Tool pingt den Server kontinuierlich an und berechnet die minimalen, maximalen und durchschnittlichen Latenzwerte.
Drücken Sie
Ctrl+C, um den Befehl zu beenden und die Ergebnisse anzusehen.
Wenn der Befehl eine gleichbleibend niedrige durchschnittliche Latenz (in der Regel 1 Millisekunde oder weniger) ausgibt, ist die Instanz fehlerfrei und reagiert schnell.
Wenn der Befehl eine gleichbleibend niedrige Latenz zeigt, in Ihrer Clientanwendung aber weiterhin Verzögerungen auftreten, können die folgenden Probleme die Latenz verursachen:
- Netzwerk: Wenn der Traffic zwischen Ihrem Client und der Instanz über verschiedene Regionen oder Zonen weitergeleitet wird, kann es zu erheblichen Netzwerkverzögerungen kommen.
- Client: Eine hohe CPU- oder Speicherauslastung auf dem Client, erschöpfte Verbindungspools oder Engpässe in der Anwendungslogik können die gesamte Umlaufzeit erhöhen, die der Client benötigt.
Szenarien für die Speicherverwaltung
In diesem Abschnitt werden Probleme mit der Speicherverwaltung erläutert, die bei Ihrer Instanz auftreten können.
Welchen Messwert können Sie verwenden, um festzustellen, ob Ihre Instanz unter Speicherauslastung leidet?
Wenn Sie die Arbeitsspeichernutzung einer Memorystore for Valkey-Instanz überwachen möchten, empfehlen wir, den Messwert /instance/memory/maximum_utilization zu verwenden. Wenn die Arbeitsspeichernutzung der Instanz sich 80% nähert und Sie erwarten, dass die Datennutzung zunimmt, skalieren Sie die Größe der Instanz hoch, um die Leistung zu verbessern und Platz für neue Daten zu schaffen.
Überwachungsszenarien
In diesem Abschnitt werden Überwachungsprobleme beschrieben, die bei Ihrer Instanz auftreten können.
Wie richte ich Benachrichtigungen für Memorystore for Valkey ein?
Mit Cloud Monitoring können Sie Benachrichtigungen einrichten, die Sie informieren, wenn Messwerte Schwellenwerte überschreiten, die Sie für Ihre Instanz festgelegt haben. Weitere Informationen zum Einrichten von Benachrichtigungen in Cloud Monitoring finden Sie unter Cloud Monitoring-Benachrichtigung für die Arbeitsspeichernutzung festlegen.
Szenarien für die Verbindungsverwaltung
In diesem Abschnitt werden Probleme bei der Verbindungsverwaltung beschrieben, die bei Ihrer Instanz auftreten können.
Was können Sie tun, wenn Sie das Verbindungslimit erreichen oder ein Verbindungstimeout auftritt?
Wenn Sie das Verbindungslimit erreichen, kann Ihr Client keine Verbindung zu Ihrem Server herstellen. Das wird als Verbindungsablehnung bezeichnet.
Gehen Sie in diesem Fall so vor:
- Mit der Messwert
/instance/node/stats/rejected_connections_countkönnen Sie die Anzahl der Verbindungen ermitteln, die von Memorystore for Valkey abgelehnt werden, weil der Instanzknoten das maximale Clientlimit erreicht. - Mit dem Messwert
/instance/node/clients/connected_clientskönnen Sie die Anzahl der Clients ermitteln, die mit dem Instanzknoten verbunden sind. So können Sie sehen, ob alle Knoten in der Instanz unter dem Limit liegen. - Beenden Sie alle unerwünschten Verbindungen mit dem Befehl
client kill. - Verringern Sie die Anzahl der Verbindungen oder die Poolgröße in der Clientanwendung. Weitere Informationen finden Sie in der Dokumentation zur Clientanwendung.
- Passen Sie das Limit für die maximale Anzahl von Clients an. Weitere Informationen finden Sie unter Instanz konfigurieren.
- Skalieren Sie Ihre Instanz auf einen größeren Knotentyp, damit sie ein höheres Verbindungslimit hat.
Zeitüberschreitungsszenarien
In diesem Abschnitt werden Zeitüberschreitungsprobleme beschrieben, die bei Ihrer Instanz auftreten können.
Was tun Sie, wenn Sie eine I/O-Zeitüberschreitung erhalten?
Wenn ein Lese- oder Schreibvorgang in Memorystore for Valkey nicht innerhalb eines bestimmten Zeitraums abgeschlossen wird, tritt ein I/O-Zeitüberschreitungsfehler auf. Dieser Timeout kann verschiedene Gründe haben. Beispielsweise sind ein oder mehrere Knoten Ihrer Instanz möglicherweise überlastet.
Wenn Sie eine E/A-Zeitüberschreitung erhalten, gehen Sie so vor:
- Mit dem Messwert
instance/cpu/maximum_utilizationkönnen Sie die CPU-Auslastung für einen Knoten in Ihrer Instanz ermitteln, die zwischen 0,0 (0%) und 1,0 (100%) liegt. Wir empfehlen, dass die CPU-Auslastung aller Knoten unter 80 % liegt. Weitere Informationen finden Sie unter Best Practices für die CPU-Nutzung. - Wenn die Verbindung des Clients zum Server getrennt wird, weil der Server eine Zeitüberschreitung meldet, versuchen Sie es noch einmal mit exponentiellem Backoff und Jitter. So wird verhindert, dass mehrere Clients den Server gleichzeitig überlasten.
Szenarien für Verbindungsfehler
In diesem Abschnitt werden Verbindungsprobleme beschrieben, die bei Ihrer Instanz auftreten können.
Verbindungsfehler aufgrund von Firewallregeln
Wenn Sie die richtigen Ports in Ihrer Firewall nicht zulassen, können bei Ihrer Instanz Verbindungsfehler auftreten, da die Firewall die von Memorystore for Valkey verwendeten Ports blockieren kann.
Für alle Private Service Connect-Endpunkte Ihrer Instanz müssen Sie den TCP-Port 6379 sowie die TCP-Ports 11000 bis 13047 zulassen. Weitere Informationen zu diesen Endpunkten finden Sie unter Reservierte Netzwerkadressen.
Verbindungsfehler aufgrund von Organisationsrichtlinien
Möglicherweise haben Sie eine Organisationsrichtlinie, die Ihre Private Service Connect-Verbindungen zu Ihrer Memorystore for Valkey-Instanz blockiert.
Wenn in der Richtlinie Ihrer Organisation die .restrictPrivateServiceConnectProducer-Richtlinie verwendet wird, setzen Sie die 672235397475-Ordnernummer auf die Zulassungsliste. Dieser Ordner ist speziell für Memorystore for Valkey vorgesehen. Beispiel:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/672235397475
Wenn in Ihrer Organisationsrichtlinie die Richtlinie .disablePrivateServiceConnectCreationForConsumers verwendet wird, setzen Sie SERVICE_PRODUCERS auf die Zulassungsliste. Beispiel:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
Verbindungsfehler durch nicht reagierende Verbindungen
Wir empfehlen dringend, Ihre Clientanwendung so zu konfigurieren, dass nicht reagierende Verbindungen zu Memorystore for Valkey erkannt werden. Wenn eine nicht reagierende Verbindung erkannt wird, muss der Client sie zurücksetzen. Um eine robuste Anwendung zu erstellen, empfehlen wir die folgenden Clientkonfigurationen:
- TCP-Keep-Alive-Parameter konfigurieren: Legen Sie die Parameter
TCP keepalive time,TCP keepalive intervalundTCP keepalive probesso fest, dass Clients nicht reagierende Verbindungen proaktiv erkennen und trennen, auch wenn die Verbindungen inaktiv sind. Wenn Sie beispielsweise den ParameterTCP keepalive timeauf 30 Sekunden,TCP keepalive intervalauf 10 Sekunden undTCP keepalive probesauf 3 festlegen, werden inaktive Verbindungen, die nicht reagieren, innerhalb einer Minute zurückgesetzt. - TCP-Nutzer-Timeouts konfigurieren: Legen Sie dieses Timeout in Ihren Clients fest, um Verbindungen zurückzusetzen, für die ausstehende Anfragen vorhanden sind und die nicht mehr reagieren. Wenn Sie das Zeitlimit beispielsweise auf 15 Sekunden festlegen, werden nicht reagierende Verbindungen mit ausstehenden Anfragen nach 15 Sekunden zurückgesetzt.
Fehlerbehandlung für Instanzen mit deaktiviertem Clustermodus
Wenn die Anwendung eine Verbindung zum Leseendpunkt einer Instanz herstellt, die keine Lesereplikate hat, wird die Verbindung geschlossen und die Fehlermeldung
ERR no replicas foundwird angezeigt. In diesem Fall können Sie entweder versuchen, die Anwendung mit dem primären Endpunkt zu verbinden, oder der Instanz Lesereplikate hinzufügen.Im Falle eines Failovers werden die bestehenden Verbindungen von Ihrer Anwendung geschlossen und die Fehlermeldung
ERR role change occurredwird angezeigt. Diese Fehlermeldung wird auch angezeigt, wenn Ihre Anwendung eine Verbindung zum Lese-Endpunkt einer Instanz herstellt und alle Lesereplikate der Instanz fehlschlagen. In diesem Fall muss die Anwendung die Verbindung mit exponentiellem Backoff wiederholen.
Persistenzszenarien
In diesem Abschnitt werden Probleme mit der Persistenz beschrieben, die bei Ihrer Instanz auftreten können.
Ihr Schreibtraffic übersteigt die Fähigkeit von Memorystore for Valkey, Speicherplatz durch AOF-Rewriting zu komprimieren und freizugeben.
Wenn diese Situation eintritt, wächst die AOF-Datei (Append-Only File) schneller, als der Rewrite-Prozess bewältigen kann. Dies führt zu einer Erschöpfung des Speicherplatzes auf dem Laufwerk, zu Schreibfehlern und zu einer Blockierung von Vorgängen, die das Erstellen von Replikaten und eine vollständige Synchronisierung erfordern.
In Memorystore for Valkey wurden Schutzmaßnahmen implementiert, um den Schreibdurchsatz zu regulieren. So wird sichergestellt, dass das AOF-Umschreiben mit anhaltenden Arbeitslasten mit vielen Schreibvorgängen mithalten kann.