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 Ihrem Cluster auftreten können.

Wie werden Replikationsverzögerungen überwacht?

Memorystore for Redis Cluster hat den /cluster/replication/maximum_offset_diff Messwert. Dieser Messwert überwacht die maximale Replikations-Offset-Differenz (in Byte) für einen Knoten in einem primären Cluster.

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

Wir empfehlen, einen Schwellenwert für den Messwert maximum_offset_diff festzulegen. Wenn der Schwellenwert überschritten wird, kann Memorystore for Redis Cluster Sie per Benachrichtigung informieren.

Je nach Knotentyp für Ihren Cluster empfehlen wir, den Schwellenwert so festzulegen:

  • Wenn der Knotentyp redis-shared-core-nano, redis-standard-small, redis-highmem-medium, redis-highcpu-medium oder redis-standard-large ist, legen Sie den Schwellenwert auf weniger als 64 MB fest.

  • Wenn der Knotentyp redis-highmem-xlarge oder redis-highmem-2xlarge ist, legen Sie den Schwellenwert auf weniger als 1 GB fest.

Szenarien für Verbindungsfehler

In diesem Abschnitt werden Verbindungsprobleme erläutert, die bei Ihrem Cluster auftreten können.

Verbindungsfehler aufgrund von Firewallregeln

Firewallregeln können Verbindungsfehler verursachen, indem sie die Ports blockieren, die von Memorystore for Redis Cluster verwendet werden. Lassen Sie für beide Private Service Connect-Endpunkte Ihres Clusters die TCP-Ports 11000 bis 13047 zu. 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 Ihrem Cluster blockiert.

Wenn Ihre Organisationsrichtlinie die Richtlinie .restrictPrivateServiceConnectProducer verwendet, lassen Sie den Ordner 961333125034 zu. Dieser Ordner ist speziell für Memorystore for Redis Cluster vorgesehen. Beispiel:

name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
    rules:
      - values:
          allowedValues:
          - under:folders/961333125034

Wenn Ihre Organisationsrichtlinie die Richtlinie .disablePrivateServiceConnectCreationForConsumers verwendet, lassen Sie SERVICE_PRODUCERS zu. 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 Redis Cluster 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 im Leerlauf 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-Benutzerzeitlimits konfigurieren: Legen Sie dieses Zeitlimit in Ihren Clients fest, um Verbindungen zurückzusetzen , bei denen ausstehende Anfragen vorhanden sind und die 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.

Szenarien für CPU-Auslastung

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

Der Ausgabepuffer Ihres Clusters ist voll

Wenn der Ausgabepuffer Ihres Clusters 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 Ihres Clusters voll ist und ein neuer Schreibvorgang eingeht, entfernt Memorystore for Redis Cluster Schlüssel, um Platz für den Schreibvorgang zu schaffen. Dieser Vorgang basiert auf der maxmemory-Richtlinie Ihres Clusters. Die Richtlinie allkeys-lru entfernt die am weitesten in der Vergangenheit verwendeten (LRU) Schlüssel aus dem gesamten Keyset.

Wir empfehlen, die Werte für maxmemory und den verwendeten Speicher Ihres Clusters im Blick zu behalten. So können Sie feststellen, ob Ihr Cluster die bereitgestellte Clusterkapazität erreicht. 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 Ihren Cluster?

Wenn Ihr Cluster eine hohe CPU-Auslastung aufweist oder die Ressourcen des Clusters erschöpft sind (z. B. durch zu viele Verbindungen), kann es zu Fehlverhalten des Clusters kommen und externe Messwerte fehlen möglicherweise.

Quelle der Latenz Ihres Clusters isolieren

Wenn Sie feststellen möchten, ob die Latenz, die Sie beobachten, von Ihrem Cluster oder von Ihrer Clientanwendung und Netzwerkumgebung stammt, können Sie mit dem Tool redis-cli einen kontinuierlichen Latenztest ausführen.

So isolieren Sie die Quelle der Latenz Ihres Clusters:

  1. Stellen Sie eine Verbindung zu einer Compute Engine-VM her, die sich in derselben Region und demselben VPC-Netzwerk wie Ihr Cluster befindet.

  2. Installieren Sie das Tool redis-cli auf Ihrer VM, falls es noch nicht installiert ist.

    • Führen Sie für Debian- oder Ubuntu-basierte VMs den folgenden Befehl aus:

      sudo apt-get install redis-tools
      
    • Führen Sie für RHEL- oder CentOS-basierte VMs den folgenden Befehl aus:

      sudo yum install redis
      
  3. Führen Sie den folgenden Befehl aus, um die Latenz des Clusters in Millisekunden zu messen:

    redis-cli --latency -h DISCOVERY_ENDPOINT_ADDRESS -p PORT
    

    Wenn Ihr Cluster die Verschlüsselung während der Übertragung verwendet, müssen Sie das Flag --tls anhängen und Ihre Zertifizierungsstellen (CAs) angeben, um eine Verbindung herzustellen.

    Ersetzen Sie die folgenden Werte:

    • DISCOVERY_ENDPOINT_ADDRESS: die IP-Adresse des Discovery-Endpunkts Ihres Clusters.
    • PORT: die Portnummer, die für den Discovery-Endpunkt Ihres Clusters 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 die Ausführung des Befehls zu beenden und die Ergebnisse anzusehen.

Wenn der Befehl eine gleichbleibend niedrige durchschnittliche Latenz (in der Regel 1 Millisekunde oder weniger) ausgibt, ist der Cluster fehlerfrei und reagiert schnell.

Wenn der Befehl eine normale Serverleistung zeigt, aber bei Ihrer Clientanwendung weiterhin Verzögerungen auftreten, können die folgenden Probleme die Latenz verursachen:

  • Netzwerk: Traffic, der zwischen Ihrem Client und dem Cluster ü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.

Persistenzszenarien

In diesem Abschnitt werden Persistenzprobleme erläutert, die bei Ihrem Cluster auftreten können.

Ihr Schreibtraffic übersteigt die Fähigkeit von Memorystore for Redis Cluster, Speicher durch AOF-Rewriting zu komprimieren und freizugeben

In diesem Fall wächst die Append-Only File (AOF) schneller, als der Rewriting-Prozess verarbeiten kann. Dies 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 Redis Cluster hat Schutzmaßnahmen implementiert, um den Schreibdurchsatz zu regulieren. So wird sichergestellt, dass das AOF-Rewriting mit anhaltend hohen Schreibarbeitslasten Schritt halten kann.