Auf dieser Seite werden verschiedene Probleme, die Fehlermeldungen für diese Probleme und Schritte zur Fehlerbehebung erläutert.
Verbindungsprobleme
Wenn bei Ihrer Memorystore for Redis-Instanz Verbindungsprobleme auftreten, prüfen Sie die Probleme in diesem Abschnitt, um herauszufinden, ob eines davon das Problem verursacht.
Wenn ein Problem in diesem Abschnitt nicht mit Ihrem Problem übereinstimmt, stellen Sie eine Telnet-Verbindung zu einem Ihrer Redis-Knoten her und führen Sie einige Redis-Befehle aus, um zu prüfen, ob die Instanz reagiert.
Wenn der Knoten nicht reagiert, prüfen Sie, ob eines der Netzwerkprobleme die Netzwerkverbindung des Knotens blockiert. Wenn das Problem durch keine dieser Maßnahmen behoben wird, wenden Sie sich an den Cloud Customer Care.
Sie stellen Ressourcen in verschiedenen VPC-Netzwerken bereit.
Wenn Sie eine Verbindung zu einer Memorystore for Redis-Instanz über eine Google Cloud -Ressource wie eine Compute Engine-VM herstellen möchten, müssen Sie die Ressourcen im selben autorisierten VPC-Netzwerk wie die Instanz bereitstellen.
Der Versuch, eine Telnet-Verbindung zu einer Instanz von einer Ressource in einer anderen Region oder einem anderen VPC-Netzwerk aus herzustellen, führt zu folgender Fehlermeldung:
telnet: Unable to connect to remote host: Connection timed out
Sie löschen ein VPC-Netzwerk-Peering.
Wenn Sie eine Memorystore for Redis-Instanz erstellen, wird ein VPC-Peering zwischen Ihrem VPC-Netzwerk und einem internen Google-VPC-Netzwerk erstellt.
Das Netzwerk-Peering hat folgendes Format:
redis-peer-############
Wird dieses Netzwerk-Peering gelöscht, führt der Versuch, eine Telnet-Verbindung zur Instanz herzustellen, zu folgender Fehlermeldung:
telnet: Unable to connect to remote host: Connection timed out
Wenn Sie das gelöschte Netzwerk-Peering wiederherstellen möchten, erstellen Sie eine weitere Instanz. Löschen Sie dann diese Instanz. Ihre ursprüngliche Instanz verfügt jetzt über das erforderliche Netzwerk-Peering.
Sie erstellen Firewallregeln, die die IP-Adressen Ihrer Instanz blockieren.
Wenn Sie Firewallregeln für ausgehenden Traffic erstellen, die entweder den Port (6379) oder die IP-Adresse Ihrer Memorystore for Redis-Instanz blockieren, können Verbindungsprobleme auftreten. Erstellen Sie keine Netzwerk-Firewallregeln, die den IP-Adressbereich Ihrer Instanz blockieren.
Probleme mit der CPU-Nutzung
In diesem Abschnitt werden Probleme mit der CPU-Auslastung beschrieben, die bei Ihrer Memorystore for Redis-Instanz auftreten können.
Ihre Instanz weist eine hohe Latenz auf oder reagiert nicht.
Wenn bei Ihrer Memorystore for Redis-Instanz Probleme mit hoher Latenz oder hoher Reaktionsfähigkeit auftreten, können diese Probleme durch die Verwendung der folgenden ressourcenintensiven Redis-Befehle verursacht werden:
Diese Befehle können die CPU stark belasten. Wir empfehlen, den Befehl KEYS nicht in Produktionsumgebungen auszuführen. Verwenden Sie stattdessen SCAN, da dieser Befehl weniger Ressourcen als KEYS benötigt.
Wenn Sie LRANGE verwenden, um alle oder einen großen Teil Ihres Schlüsselraums abzufragen, können leistungsfähige CPU-Ressourcen genutzt werden. Um dieses Problem zu beheben, empfehlen wir, die Anzahl der Schlüssel im Keyset zu reduzieren, die Sie in einem einzigen Vorgang abfragen.
Die Verwendung eines komplexen Lua-Skripts mit EVAL kann ebenfalls zu einer hohen CPU-Auslastung führen. Wir empfehlen, weniger komplexe Lua-Skripts zu verwenden.
HGETALL und ZRANGE können eine große Anzahl von Schlüsseln zurückgeben, was sich negativ auf die Leistung Ihres Servers auswirken kann. Statt HGETALL empfehlen wir, den Befehl HSCAN auszuführen. Außerdem empfehlen wir, vor der Verwendung von ZRANGE die Größe des Bereichs zu begrenzen, den Sie für eine Abfrage verwenden.
Bevor Sie einen ressourcenintensiven Befehl ausführen, sollten Sie die Größe der Datenstrukturen prüfen, die vom Befehl abgefragt werden, um Latenz zu vermeiden.
Wenn bei Ihrer Instanz eine hohe Latenz auftritt oder sie nicht reagiert, gehen Sie so vor:
- Prüfen Sie Ihre clientseitigen Logs, um festzustellen, ob ressourcenintensive Befehle ausgeführt wurden. Falls ja, notieren Sie sich das Datum und die Uhrzeit.
- Verwenden Sie Cloud Monitoring, um den Messwert
redis.googleapis.com/stats/cpu_utilizationaufzurufen. Prüfen Sie, ob Zeiten mit hoher CPU-Auslastung mit denen übereinstimmen, in denen die ressourcenintensiven Befehle ausgeführt wurden.
Der Ausgabepuffer Ihrer Instanz hat keinen Speicherplatz mehr.
Wenn der Ausgabepuffer Ihrer Memorystore for Redis-Instanz keinen Speicherplatz mehr hat, gehen Sie so vor:
- Legen Sie einen kleineren Wert für den Parameter
maxmemory-gbfest. - 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 Redis gemäß der maxmemory-Richtlinie Ihrer Instanz entfernt, damit es genügend Platz für den Schreibvorgang gibt. Die allkeys-lru-Richtlinie entfernt die am weitesten in der Vergangenheit verwendeten (LRU) Schlüssel aus dem gesamten Keyset.
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-gb verringern, haben Sie außerdem mehr Spielraum für den Overhead.
Netzwerkprobleme
In diesem Abschnitt werden Netzwerkprobleme beschrieben, die bei Ihrer Instanz auftreten können.
Der zugewiesene IP-Bereich ist ausgeschöpft oder es ist ein in Konflikt stehender Pfad vorhanden.
Wenn Sie Ressourcen im IP-Adressbereich erstellen, der für Memorystore for Redis vorgesehen ist, kann es sein, dass alle IP-Adressen aufgebraucht werden. Möglicherweise gibt es auch eine Route, die mit der IP-Adresse der Memorystore for Redis-Instanz in Konflikt steht, die Sie erstellen möchten.
Diese Probleme führen dazu, dass die folgende Fehlermeldung angezeigt wird:
The IP ranges for the connection do not have enough available IPs. Allocate a
new range or expand existing range and try again.
Weisen Sie zusätzliche IP-Adressen zu oder beheben Sie die Abweichung des Routenkonflikts, um dieses Problem zu beheben. Weitere Informationen finden Sie unter IP-Adressbereich erschöpft.
Sie haben für Ihr Netzwerk keine Verbindung für den Zugriff auf private Dienste eingerichtet.
Wenn Ihre Memorystore for Redis-Instanz den Verbindungsmodus für den Zugriff auf private Dienste verwendet, aber für Ihr Netzwerk keine Verbindung für den Zugriff auf private Dienste besteht, wird möglicherweise folgende Fehlermeldung angezeigt:
Google private service access is not enabled. Enable private service access and
try again
Um dieses Problem zu beheben, stellen Sie eine Verbindung für den Zugriff auf private Dienste her.
Sie löschen das Netzwerk-Peering für die Verbindung für den Zugriff auf private Dienste.
Wenn Sie eine Verbindung für den Zugriff auf private Dienste herstellen, erstellt Memorystore for Redis eine Netzwerk-Peering-Verbindung namens servicenetworking-googleapis-com. Diese Verbindung wird auf der Seite VPC-Netzwerk-Peering Ihres Projekts angezeigt.
Wenn Sie das Netzwerk-Peering löschen, wird für vorhandene Instanzen die folgende Fehlermeldung angezeigt:
telnet: Unable to connect to remote host: Connection timed out
Wenn Sie das Netzwerk-Peering löschen und dann eine Instanz erstellen, wird außerdem die folgende Fehlermeldung angezeigt:
Private services access is not configured correctly. For steps on how to
verify the connection, check the documentation.
Um dieses Problem zu beheben, erstellen Sie eine Verbindung für den Zugriff auf private Dienste zwischen Ihrem Netzwerk und dem Netzwerk für den Zugriff auf private Dienste, indem Sie den folgenden Befehl ausführen:
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME --network=VPC_NETWORK --project=PROJECT_ID
Sie verwenden widersprüchliche Parameter.
Wenn Sie sowohl den Parameter --reserved-ip-range als auch den Parameter --connect-mode=private-service-access verwenden, erhalten Sie die folgende Fehlermeldung:
Reserved IP range is not supported for --connect-mode private services access
Sie können nicht beide Parameter gleichzeitig verwenden, da Memorystore for Redis den Parameter --reserved-ip-range für den Verbindungsmodus für den Zugriff auf private Dienste nicht unterstützt.
Führen Sie einen der folgenden Schritte aus, um das Problem zu lösen:
- Verwenden Sie den Parameter
--reserved-ip-rangemit dem Parameter--connect-mode=direct-peering. - Verwenden Sie den Parameter
--reserved-ip-rangenicht.
Sie überschreiten das Subnetzwerkkontingent für Ihr Projekt.
Die Anzahl der Subnetzwerke, die Sie in IhremGoogle Cloud -Projekt erstellen können, ist begrenzt. Wenn Sie dieses Kontingent überschreiten, erhalten Sie eine der folgenden Fehlermeldungen:
Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
oder
Unable to create instance. Network quota limit has been reached. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
Füllen Sie zur Behebung dieses Problems entweder das Formular aus, das in den Fehlermeldungen angezeigt wird, oder wenden Sie sich an den Cloud Customer Care.
Sie hängen Ihr Dienstprojekt nicht an Ihr Hostprojekt an.
Wenn Sie eine freigegebene VPC verwenden und Ihr Dienstprojekt nicht an Ihr Hostprojekt anhängen, wird die folgende Fehlermeldung angezeigt:
Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.
Hängen Sie Ihr Dienstprojekt an Ihr Hostprojekt an, um dieses Problem zu beheben.
Sie erstellen eine Instanz in einem Dienstprojekt mit dem Direct Peering-Verbindungsmodus und weisen ein freigegebene VPC-Netzwerk zu.
Wenn Sie eine Memorystore for Redis-Instanz in einem Dienstprojekt erstellen und ein freigegebene VPC-Netzwerk aus dem Hostprojekt für die Instanz festlegen, können Sie den Direct Peering-Verbindungsmodus nicht verwenden.
Der Verbindungsmodus ist standardmäßig auf Direct Peering gesetzt. Wenn Sie versuchen, diesen Verbindungsmodus beim Erstellen einer Instanz zu verwenden, und außerdem ein freigegebene VPC-Netzwerk aus dem Hostprojekt als Wert für den Parameter --network auswählen, erhalten Sie die folgende Fehlermeldung:
Authorized_network must exist in the same project as redis instance
Führen Sie einen der folgenden Schritte aus, um das Problem zu lösen:
- Verwenden Sie beim Erstellen der Instanz den Verbindungsmodus für den Zugriff auf private Dienste
(--connect-mode=private-service-access). - Wählen Sie ein autorisiertes VPC-Netzwerk aus, das sich im selben Projekt wie Ihre Instanz befindet.
Sie verwenden einen IP-Adressbereich für Compute Engine, auf den Memorystore for Redis nicht zugreifen kann.
Sie können nicht von einer Compute Engine-VM mit einer IP-Adresse im Bereich 172.17.0.0/16 auf Ihre Memorystore for Redis-Instanz zugreifen.
Dieser Bereich ist für eine interne Komponente reserviert.
Um dieses Problem zu beheben, greifen Sie über eine Compute Engine-VM, die eine IP-Adresse in einem anderen Bereich hat, auf Ihre Instanz zu.
Probleme bei der Verbindung mit Ihrer Instanz über andere Google Cloud Ressourcen
In diesem Abschnitt werden Probleme beschrieben, die bei Ihrer Memorystore for Redis-Instanz auftreten können, wenn andere Ressourcen versuchen, eine Verbindung zu ihr herzustellen.
Sie können keine Verbindung zu Ihrer Instanz aus serverlosen Umgebungen herstellen, die einen Connector für Serverloser VPC-Zugriff erfordern
Wenn Sie keine Verbindung zu Ihrer Memorystore for Redis-Instanz über eine der serverlosen Umgebungen herstellen können, die einen Connector für Serverloser VPC-Zugriff erfordern, prüfen Sie, ob Sie diesen Connector für Ihre Umgebung eingerichtet haben. Weitere Informationen finden Sie unter Anforderung des Connectors für serverlosen VPC-Zugriff.
Sie können keine Verbindung zu Ihrer Instanz über einen Google Kubernetes Engine-Cluster (GKE) herstellen.
Wenn Sie eine Verbindung zu Ihrer Memorystore for Redis-Instanz über einen GKE-Cluster herstellen möchten, müssen Sie VPC-natives/IP-Aliasing im Cluster aktivieren.
Es ist am einfachsten, VPC-natives/IP-Aliasing beim Erstellen des Clusters zu aktivieren. Wählen Sie im Abschnitt „Erweiterte Optionen“ die Option VPC-nativ aus. Weitere Informationen finden Sie unter VPC-nativen Cluster erstellen.
Probleme mit der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM)
In diesem Abschnitt werden IAM-Probleme beschrieben, die bei Ihrer Memorystore for Redis-Instanz auftreten können.
Sie möchten eine gelöschte Richtlinienbindung für ein Dienstkonto wiederherstellen.
Memorystore for Redis verwendet die folgenden Dienstkonten zur Verwaltung Ihrer Instanzen:
service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.comservice-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
Wenn Sie die Richtlinienbindungen für diese Dienstkonten löschen, können Sie keine Instanzen erstellen.
Wenn Sie versuchen, eine Memorystore for Redis-Instanz mit der Google Cloud CLI zu erstellen, erhalten Sie möglicherweise die folgende Fehlermeldung:
(gcloud.redis.instances.create) FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member='serviceAccount:service-YOUR_PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again.
Führen Sie den folgenden Befehl aus, um die Richtlinienbindung für das Dienstkonto service-networking wiederherzustellen. Ersetzen Sie VARIABLES durch die entsprechenden Werte.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
Führen Sie den folgenden Befehl aus, um die Richtlinienbindung für das cloud-redis-Dienstkonto wiederherzustellen. Ersetzen Sie VARIABLES durch die entsprechenden Werte.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'
Probleme mit Zeitüberschreitungen bei Vorgängen
Die folgenden Probleme führen zu einer nicht reagierenden Redis-Instanz und/oder zu Zeitüberschreitungen bei Instanz-/Knotenvorgängen.
Probleme mit der Netzwerkpartitionierung
Manchmal können Google Cloud Ressourcen aufgrund eines Netzwerkpartitionsfehlers in Google Cloud-Servern nicht zonenübergreifend kommunizieren. Dies kann dazu führen, dass die Verbindung der Instanz unterbrochen wird und ein Zeitüberschreitungsfehler auftritt.
Nachdem Google Cloud den Netzwerkpartitionsfehler für die Region oder Zone, in der die Instanz bereitgestellt wird, behoben hat, sollte die Verbindung normal fortgesetzt werden.
In diesem Fall wird möglicherweise eine Verbindungsfehlermeldung wie die folgende angezeigt:
telnet: Unable to connect to remote host: Connection timed out
Wenn Sie die Ursache des Zeitüberschreitungsfehlers nicht ermitteln können, wenden Sie sich an den Google Cloud Support.
Dienstprojekt und Hostprojekt befinden sich nicht im selben VPC-Dienststeuerungsperimeter
Wenn Sie eine freigegebene VPC und einen VPC-Dienststeuerungsperimeter verwenden und bei Ihrer Redis-Instanzerstellung eine Zeitüberschreitung stattfindet, kann dies darauf hinweisen, dass sich Ihr Dienstprojekt und Ihr Hostprojekt nicht im selben Dienstperimeter befinden. Ihr Dienstprojekt und Ihr Hostprojekt müssen sich im selben Perimeter befinden, damit Ihre Redis-Instanzen mit Verbindungsclients über das freigegebene VPC-Netzwerk kommunizieren können.
Um herauszufinden, ob dieses Problem bei Ihnen auftritt, prüfen Sie die Audit-Logs Ihrer Redis-Instanz auf den folgenden Fehler:
violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Um dieses Problem zu beheben, platzieren Sie Ihr Hostnetzwerk und Ihr Dienstnetzwerk im selben Dienstperimeter.
Fehlerbehebung bei Import- und Exportproblemen
Dieser Abschnitt beschreibt einige häufige Probleme, auf die Sie bei der Verwendung von Import und Export für Memorystore for Redis stoßen können.
Import- und Exportschaltflächen sind in der Google Cloud Console deaktiviert
Problem: Der in der Konsole angemeldete Nutzer hat nicht die Berechtigungen redis.instances.import und/oder redis.instances.export, die zum Importieren und/oder Exportieren von RDB-Dateien erforderlich sind.
Lösung: Weisen Sie dem Nutzer die Berechtigungen zu und aktualisieren Sie die Seite mit den Instanzdetails.
Der Importvorgang ist abgeschlossen, die Daten wurden jedoch nicht wiederhergestellt.
Wenn ein Importvorgang abgeschlossen ist, die Daten aber nicht wiederhergestellt werden, prüfen Sie zuerst die Google Cloud -Konsole oder die Befehlszeile auf eine Fehlermeldung und beheben Sie alle Probleme, die durch die Fehlermeldung beschrieben werden.
Wenn während des Importvorgangs ein Fehler auftritt, wird die Instanz mit einer leeren RDB-Datei wiederhergestellt. Sie können versuchen, die Daten wiederherzustellen. Importieren Sie dazu dieselbe RDB-Datei oder verwenden Sie eine andere RDB-Datei.
Der Import ist fehlgeschlagen, weil die RDB-Datei zu groß war.
Wenn Sie die Fehlermeldung "Import RDB file gs://bucket/object.rdb size exceeded maximum memory 10GB" erhalten, sollten Sie Ihre Instanz skalieren und den Import noch einmal versuchen. Sie können auch versuchen, eine kleinere RDB-Datei in Ihre Instanz zu importieren.
Fehlerbehebung bei Problemen mit der Google Cloud CLI
Wenn ein Problem auftritt, bei dem ein gcloud CLI-Befehl nicht verfügbar ist oder wenn sich der Befehl anders verhält, als er dokumentiert ist, versuchen Sie, die gcloud CLI zu aktualisieren:
gcloud components update
Alle laufenden Befehle und Verbindungen für eine Redis-Instanz anhalten
Da Memorystore for Redis ein von Google verwaltetes Produkt ist, gibt es einige Befehle, die in Ihrer Redis-Instanz blockiert werden, um eine sichere und zuverlässige Umgebung bereitzustellen. Einer der eingeschränkten Befehle ist CLIENT, einschließlich CLIENT KILL, zum Stoppen von Befehlen.
Wenn ein Redis-Befehl eine hohe CPU-/RAM-Auslastung verbraucht und Ihre Produktionsumgebung beeinträchtigt, müssen Sie die Instanz neu starten (fürBasisstufe Konfigurationen) oder ein Failover in ein Replikat (für Standard-Stufe-Konfigurationen). Dieser Neustart-/Failover-Vorgang stoppt alle auf dem Redis-Server ausgeführten Befehle und beendet alle laufenden Verbindungen.
Im Folgenden finden Sie Befehle zur Durchführung von Neustarts oder Failovers für jede Memorystore for Redis-Konfiguration.
Befehle in Memorystore for Redis-Instanzen der Basis-Stufe beenden
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Befehle in Memorystore for Redis-Instanzen der Basis-Stufe beenden
Die einzige Möglichkeit, einen Neustart in einer Memorystore for Redis-Instanz durchzuführen, besteht darin, die Konfiguration zu ändern, z. B. das Hochskalieren der Instanz. Unten finden Sie ein Beispiel für einen Befehl, den Sie ausführen können, um Ihre Instanz neu zu starten.
gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB
Nachdem Sie Ihre Instanz auf eine andere Größe skaliert haben, können Sie einen weiteren Skalierungsvorgang durchführen, um sie wieder auf die ursprüngliche Größe zu bringen.
Probleme mit der Organisationsrichtlinie zur domaineingeschränkten Freigabe
Je nachdem, wann Ihre Instanz erstellt wurde, verwendet Memorystore for Redis eines von zwei verschiedenen Dienstkontoformaten. Informationen dazu, welches Dienstkontoformat für Ihre Instanz verwendet wird, finden Sie unter Memorystore for Redis-Dienstkontoformat.
Es gibt ein bekanntes Problem, bei dem die Organisationsrichtlinie iam.allowedPolicyMemberDomains Fehler verursacht, wenn sie mit Memorystore for Redis-Instanzen verwendet wird, die das Dienstkontoformat [PROJECT_NUMBER]-compute@developer.gserviceaccount.com verwenden.
Bei diesen Problemen kann der folgende Fehler auftreten:
One or more users named in the policy do not belong to a permitted customer.
Es gibt zwei Möglichkeiten, dieses Problem zu beheben.
- Instanz erstellen: Neu erstellte Instanzen haben das richtige Dienstkontoformat, das mit der Organisationsrichtlinie kompatibel ist. Wenn es wichtig ist, dass der Cacheinhalt erhalten bleibt, können Sie die vorhandenen Daten exportieren und in die neue Instanz importieren. Eine neu erstellte Instanz hat eine neue Dienst-IP-Adresse, die in Ihrer Anwendung konfiguriert werden muss.
- Kontozugriff erzwingen: Verwenden Sie diese Option nur, wenn es nicht möglich ist, die Instanz neu zu erstellen.