Probleme beheben

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-medium oder standard-large ist, legen Sie den Schwellenwert auf weniger als 64 MB fest.

  • Wenn der Knotentyp highmem-xlarge oder highmem-2xlarge ist, 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 maxmemory einen kleineren Wert fest.
  • Verwenden Sie die allkeys-lru-Richtlinie maxmemory.

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:

  1. Stellen Sie eine Verbindung zu einer Compute Engine-VM her, die sich in derselben Region und im selben VPC-Netzwerk wie Ihre Instanz befindet.

  2. 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-tools
      
    • Führen Sie für RHEL- oder CentOS-basierte VMs den folgenden Befehl aus:

      sudo yum install valkey-tools
      
  3. 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 --tls an 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.
  4. Lassen Sie den Befehl einige Minuten lang ausführen. Das Tool pingt den Server kontinuierlich an und berechnet die minimalen, maximalen und durchschnittlichen Latenzwerte.

  5. 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_count kö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_clients kö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_utilization kö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 interval und TCP keepalive probes so fest, dass Clients nicht reagierende Verbindungen proaktiv erkennen und trennen, auch wenn die Verbindungen inaktiv sind. Wenn Sie beispielsweise den Parameter TCP keepalive time auf 30 Sekunden, TCP keepalive interval auf 10 Sekunden und TCP keepalive probes auf 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 found wird 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 occurred wird 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.