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 in Ihrem Cluster auftreten können.
Wie überwachen Sie Replikationsverzögerungen?
Memorystore for Redis Cluster hat die Messwert /cluster/replication/maximum_offset_diff. Mit diesem Messwert wird der maximale Replikations-Offset-Unterschied (in Byte) für einen Knoten in einem primären Cluster ü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 Schwellenwert überschritten wird, kann Memorystore for Redis Cluster Sie durch eine Benachrichtigung informieren.
Basierend auf dem 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-mediumoderredis-standard-largeist, legen Sie den Schwellenwert auf weniger als 64 MB fest.Wenn der Knotentyp
redis-highmem-xlargeoderredis-highmem-2xlargeist, legen Sie den Grenzwert auf weniger als 1 GB fest.
Szenarien für Verbindungsfehler
In diesem Abschnitt werden Verbindungsprobleme beschrieben, die in Ihrem Cluster auftreten können.
Verbindungsfehler aufgrund von Firewallregeln
Wenn Sie die richtigen Ports in Ihrer Firewall nicht zulassen, können in Ihrem Cluster Verbindungsfehler auftreten, da die Firewall die von Memorystore for Redis Cluster verwendeten Ports blockieren kann.
Für alle Private Service Connect-Endpunkte Ihres Clusters 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 Ihrem Cluster blockiert.
Wenn in Ihrer Organisationsrichtlinie die .restrictPrivateServiceConnectProducer-Richtlinie verwendet wird, 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 in Ihrer Organisationsrichtlinie die Richtlinie .disablePrivateServiceConnectCreationForConsumers verwendet wird, lassen Sie SERVICE_PRODUCERS zu. 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 Redis-Clustern 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.
Szenarien für die CPU-Nutzung
In diesem Abschnitt werden Probleme mit der CPU-Auslastung beschrieben, die in Ihrem Cluster auftreten können.
Der Ausgabepuffer Ihres Clusters ist voll
Wenn der Ausgabepuffer Ihres Clusters 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 Ihres Clusters voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Memorystore for Redis Cluster entfernt, um Platz für den Schreibvorgang zu schaffen. Dieser Vorgang basiert auf der maxmemory-Richtlinie Ihres Clusters. Gemäß der allkeys-lru-Richtlinie werden die am wenigsten verwendeten (LRU) Schlüssel aus dem gesamten Keyset entfernt.
Wir empfehlen, die maxmemory und den verwendeten Arbeitsspeicher 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, haben Sie außerdem mehr Spielraum für den Overhead.
Warum fehlen möglicherweise externe Messwerte für Ihren Cluster?
Wenn in Ihrem Cluster eine hohe CPU-Auslastung auftritt oder die Ressourcen des Clusters erschöpft sind (z. B. durch zu viele Verbindungen), kann es sein, dass sich der Cluster nicht richtig verhält und externe Messwerte fehlen.
Latenzquelle des Clusters isolieren
Wenn Sie feststellen möchten, ob die Latenz, die Sie beobachten, von Ihrem Cluster, Ihrer Clientanwendung oder Ihrer Netzwerkumgebung stammt, verwenden Sie das Tool redis-cli, um einen kontinuierlichen Latenztest auszuführen.
So isolieren Sie die Quelle der Latenz Ihres Clusters:
Stellen Sie eine Verbindung zu einer Compute Engine-VM her, die sich in derselben Region und demselben VPC-Netzwerk wie Ihr Cluster befindet.
Wenn es noch nicht installiert ist, installieren Sie das
redis-cli-Tool auf Ihrer VM.Führen Sie für Debian- oder Ubuntu-basierte VMs den folgenden Befehl aus:
sudo apt-get install redis-toolsFühren Sie für RHEL- oder CentOS-basierte VMs den folgenden Befehl aus:
sudo yum install redis
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, 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:
- 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.
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 der Cluster fehlerfrei und reagiert schnell.
Wenn der Befehl eine konstant niedrige Latenz zeigt, in Ihrer Clientanwendung aber weiterhin Verzögerungen auftreten, können die folgenden Probleme die Latenz verursachen:
- Netzwerk: Traffic, der über verschiedene Regionen oder Zonen zwischen Ihrem Client und dem Cluster weitergeleitet wird, kann zu erheblichen Netzwerkverzögerungen führen.
- Client: Eine hohe CPU- oder Arbeitsspeichernutzung auf dem Client, erschöpfte Verbindungspools oder Engpässe in der Anwendungslogik können die gesamte Umlaufzeit erhöhen, die der Client benötigt.
Persistenzszenarien
In diesem Abschnitt werden Probleme mit der Persistenz beschrieben, die in Ihrem Cluster auftreten können.
Ihr Schreibtraffic übersteigt die Möglichkeiten von Memorystore for Redis Cluster, 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 Redis Cluster 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.