Probleme beheben

Auf dieser Seite werden verschiedene Fehlerszenarien erläutert und Anleitungen zur Behebung der Fehler gegeben.

Replikationsszenarien

In diesem Abschnitt werden Replikationsprobleme erläutert, die bei Ihrer Instanz auftreten können.

Wie werden Replikationsverzögerungen überwacht?

Memorystore for Valkey hat den /instance/replication/maximum_offset_diff Messwert. Mit diesem Messwert wird die maximale Replikations-Offset-Differenz (in Byte) für einen Knoten in einer primären Instanz überwacht.

Wenn die Replikations-Offset-Differenz niedrig gehalten wird, können Replikate häufiger inkrementelle Synchronisierungsvorgänge und zu geringeren Kosten als vollständige Synchronisierungsvorgänge ausführen.

Wir empfehlen, einen Schwellenwert für den Messwert maximum_offset_diff festzulegen. Wenn der Schwellenwert überschritten wird, kann Memorystore for Valkey Sie mit einer Benachrichtigung informieren.

Je nach 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, wenn es eine Replikationsverzögerung zwischen der primären Instanz und ihren Replikaten gibt?

Es kann zu einer erheblichen Replikationsverzögerung kommen, wenn die primäre Instanz zu viele Schreibvorgänge hat und die Replikate diese Vorgänge nicht schnell genug replizieren können. Um dieses Problem zu beheben, empfehlen wir, die Kapazität von der Instanz zu skalieren, indem Sie die Anzahl der Shards für die Instanz erhöhen.

Szenarien zur CPU-Auslastung

In diesem Abschnitt werden Probleme mit der CPU-Auslastung erläutert, die bei Ihrer Instanz auftreten können.

Was tun, wenn der Ausgabepuffer der Instanz voll ist?

Wenn der Ausgabepuffer Ihrer Memorystore for Valkey-Instanz voll ist, gehen Sie so vor:

  • Legen Sie einen kleineren Wert für den maxmemory Parameter fest.
  • Verwenden Sie die allkeys-lru maxmemory Richtlinie.

Wenn der Speicher Ihrer Instanz voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Memorystore for Valkey gemäß der maxmemory-Richtlinie Ihrer Instanz entfernt, um Platz für den Schreibvorgang zu schaffen. Die Richtlinie allkeys-lru entfernt die am weitesten in der Vergangenheit verwendeten (LRU) Schlüssel aus dem gesamten Keyset.

Wir empfehlen, maxmemory und den verwendeten Speicher Ihrer Instanz zu überwachen. So können Sie feststellen, ob die bereitgestellte Instanzkapazität erreicht wird. Wenn Sie den Wert für den Parameter maxmemory verringern, erhalten Sie außerdem mehr Platz für den Overhead.

Warum fehlen möglicherweise externe Messwerte für Ihre Instanz?

Wenn bei Ihrer Instanz eine hohe CPU-Auslastung auftritt oder die Ressourcen der Instanz erschöpft sind (z. B. durch zu viele Verbindungen), kann es zu Fehlverhalten der Instanz kommen und externe Messwerte fehlen möglicherweise.

Wie isolieren Sie die Quelle der Latenz Ihrer Instanz?

Wenn Sie feststellen möchten, ob die Latenz von Ihrer Instanz, Ihrer Clientanwendung oder Ihrer Netzwerkumgebung stammt, führen Sie mit dem Tool valkey-cli einen kontinuierlichen Latenztest aus.

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 demselben VPC-Netzwerk wie Ihre Instanz befindet.

  2. Wenn es noch nicht installiert ist, installieren Sie das Tool valkey-cli 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 Ihre Instanz die Verschlüsselung während der Übertragung verwendet, hängen Sie das Flag --tls an und geben Sie Ihre Zertifizierungsstellen (CAs) an, um eine Verbindung herzustellen.

    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 diese Portnummer 6379.
  4. Lassen Sie den Befehl einige Minuten lang laufen. 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, aber bei Ihrer Clientanwendung weiterhin Verzögerungen auftreten, können die folgenden Probleme die Ursache für die Latenz sein:

  • Netzwerk: Traffic, der zwischen Ihrem Client und der Instanz über verschiedene Regionen oder Zonen weitergeleitet wird, kann zu erheblichen Netzwerkverzögerungen führen.
  • 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 erlebt.

Szenarien zur Speicherverwaltung

In diesem Abschnitt werden Probleme mit der Speicherverwaltung erläutert, die bei Ihrer Instanz auftreten können.

Mit welchem Messwert können Sie feststellen, ob Ihre Instanz unter Speichermangel leidet?

Wenn Sie die Arbeitsspeichernutzung für eine Memorystore for Valkey-Instanz überwachen möchten, empfehlen wir, den /instance/memory/maximum_utilization Messwert anzusehen. Wenn die Arbeitsspeichernutzung der Instanz 80% erreicht und Sie mit einer Zunahme der Datennutzung rechnen, dann skalieren Sie die Größe der Instanz hoch , um die Leistung zu verbessern und Platz für neue Daten zu schaffen.

Monitoring-Szenarien

In diesem Abschnitt werden Probleme mit dem Monitoring erläutert, die bei Ihrer Instanz auftreten können.

Wie werden Benachrichtigungen für Memorystore for Valkey eingerichtet?

Sie können in Cloud Monitoring 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 zur Verbindungsverwaltung

In diesem Abschnitt werden Probleme mit der Verbindungsverwaltung erläutert, die bei Ihrer Instanz auftreten können.

Was tun, wenn Sie das Verbindungslimit erreichen oder ein Zeitlimit für die Verbindung überschritten wird?

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:

  • Verwenden Sie den /instance/node/stats/rejected_connections_count-Messwert, um die Anzahl der Verbindungen zu ermitteln, die von Memorystore for Valkey abgelehnt werden, weil der Instanz knoten das Limit für die maximale Anzahl von Clients erreicht.
  • Verwenden Sie den /instance/node/clients/connected_clients Messwert, um die Anzahl der Clients zu 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 nicht autorisierten oder unerwünschten Verbindungen mit dem client kill Befehl.
  • 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.

Szenarien für Zeitüberschreitungen

In diesem Abschnitt werden Probleme mit Zeitüberschreitungen erläutert, die bei Ihrer Instanz auftreten können.

Was tun, wenn ein I/O-Zeitlimit überschritten wird?

Wenn ein Lese- oder Schreibvorgang in Memorystore for Valkey nicht innerhalb einer bestimmten Zeit abgeschlossen wird, tritt ein I/O-Zeitlimit auf. Dieses Zeitlimit kann verschiedene Ursachen haben. Beispielsweise können ein oder mehrere Knoten Ihrer Instanz überlastet sein.

Wenn ein I/O-Zeitlimit überschritten wird, gehen Sie so vor:

  • Verwenden Sie den Messwert instance/cpu/maximum_utilization, um die CPU Auslastung für einen Knoten in Ihrer Instanz zu ermitteln, von 0,0 (0%) bis 1,0 (100%). Wir empfehlen, dass alle Knoten eine CPU-Auslastung von weniger als 80 % haben. Weitere Informationen finden Sie unter Best Practices für die CPU-Auslastung.
  • Wenn die Verbindung zum Server getrennt wird, weil das Zeitlimit des Servers überschritten wurde, versuchen Sie es mit exponentiellem Backoff und mit Jitter erneut. So wird verhindert, dass mehrere Clients den Server gleichzeitig überlasten.

Szenarien für Verbindungsfehler

In diesem Abschnitt werden Probleme mit Verbindungen erläutert, die bei Ihrer Instanz auftreten können.

Verbindungsfehler aufgrund von Firewallregeln

Firewallregeln können Verbindungsfehler verursachen, indem sie die von Memorystore for Valkey verwendeten Ports blockieren. Sie müssen alle Ports für beide Private Service Connect-Endpunkte Ihrer Instanz auf die Zulassungsliste setzen. Weitere Informationen zu den Endpunkten finden Sie unter Reservierte Netzwerkadressen.

Verbindungsfehler aufgrund von Organisationsrichtlinien

Es kann eine Organisationsrichtlinie geben, die Ihre Private Service Connect-Verbindungen zu Ihrer Memorystore for Valkey-Instanz blockiert.

Wenn Ihre Organisationsrichtlinie die Richtlinie .restrictPrivateServiceConnectProducer verwendet, setzen Sie die Ordnernummer 672235397475 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 Ihre Organisationsrichtlinie die Richtlinie .disablePrivateServiceConnectCreationForConsumers verwendet, setzen Sie SERVICE_PRODUCERS auf die Zulassungsliste. Beispiel:

name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
    rules:
      - values:
          allowedValues:
          - SERVICE_PRODUCERS

Verbindungsfehler aufgrund nicht reagierender 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, setzen Clients nicht reagierende inaktive Verbindungen innerhalb einer Minute zurück.
  • TCP-Zeitüberschreitungen für Nutzer konfigurieren: Legen Sie dieses Zeitlimit in Ihren Clients fest, um Verbindungen zurückzusetzen, die ausstehende Anfragen haben und nicht mehr reagieren. Wenn Sie das Zeitlimit beispielsweise auf 15 Sekunden festlegen, setzen Clients nicht reagierende Verbindungen mit ausstehenden Anfragen nach 15 Sekunden zurück.

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 versuchen Sie entweder, die Anwendung mit dem primären Endpunkt zu verbinden, oder fügen Sie der Instanz Lesereplikate hinzu.

  • Im Falle eines Failovers werden die vorhandenen 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 Leseendpunkt einer Instanz herstellt und alle Lesereplikate der Instanz fehlerhaft sind. In diesem Fall muss die Anwendung die Verbindung mit exponentiellem Backoff wiederholen.

Persistenzszenarien

In diesem Abschnitt werden Probleme mit der Persistenz erläutert, 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

In diesem Fall wächst die Append-Only File (AOF) schneller, als der Rewriting-Prozess verarbeiten kann. Das führt zu einer Erschöpfung des Festplattenspeichers, verursacht Schreibfehler und blockiert Vorgänge, die die Erstellung von Replikaten und die vollständige Synchronisierung erfordern.

Memorystore for Valkey hat Schutzmaßnahmen implementiert, um den Schreibdurchsatz zu regulieren. So wird sichergestellt, dass das AOF-Rewriting mit anhaltend hohen Schreibarbeitslasten Schritt halten kann.