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 der Grund dafür ist, dass die Netzwerkverbindung des Knotens blockiert ist. Wenn keines dieser Probleme das Problem behebt, wenden Sie sich an den Cloud Customer Care.
Sie stellen Ressourcen in verschiedenen VPC-Netzwerken bereit.
Um eine Verbindung zu einer Memorystore for Redis-Instanz von einer Google Cloud Ressource, wie einer Compute Engine-VM aus herzustellen, 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, erstellen Sie ein VPC-Peering zwischen Ihrem VPC-Netzwerk und einem internen Google-VPC-Netzwerk.
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
Erstellen Sie eine weitere Instanz, um das gelöschte Netzwerk-Peering wiederherzustellen. Löschen Sie dann diese Instanz. Ihre ursprüngliche Instanz hat jetzt 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-Auslastung
In diesem Abschnitt werden Probleme mit der CPU-Auslastung erläutert, die bei Ihrer Memorystore for Redis-Instanz auftreten können.
Bei Ihrer Instanz tritt eine hohe Latenz auf oder sie reagiert nicht.
Wenn bei Ihrer Memorystore for Redis-Instanz eine hohe Latenz auftritt oder sie nicht reagiert, 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 verwendet.
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 auch 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 auswirkt. Anstelle von HGETALL empfehlen wir, den Befehl HSCAN auszuführen. Außerdem empfehlen wir, die Größe des Bereichs, den Sie für eine Abfrage verwenden, zu begrenzen, bevor Sie ZRANGE verwenden.
Bevor Sie einen ressourcenintensiven Befehl ausführen, prüfen Sie die Größe der Datenstrukturen, die der Befehl abfragt, um sicherzustellen, dass er keine Latenz verursacht.
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. Wenn ja, notieren Sie das Datum und die Uhrzeit.
- Verwenden Sie Cloud Monitoring, um den
redis.googleapis.com/stats/cpu_utilizationMesswert aufzurufen. 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
maxmemory-gbParameter fest. - Verwenden Sie die
allkeys-lrumaxmemoryRichtlinie.
Wenn der Speicher Ihrer Instanz voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Memorystore for Redis entfernt, um Platz für den Schreibvorgang zu schaffen. Dieser Vorgang basiert auf der maxmemory-Richtlinie Ihrer Instanz. Die allkeys-lru-Richtlinie 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 beobachten. So können Sie feststellen, ob Ihre Instanz die bereitgestellte Instanzkapazität erreicht.
Wenn Sie den Wert für den Parameter maxmemory-gb reduzieren, erhalten Sie außerdem mehr Platz für den Overhead.
Externe Messwerte fehlen 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.
Netzwerkprobleme
In diesem Abschnitt werden Netzwerkprobleme erläutert, die bei Ihrer Instanz auftreten können.
Sie haben den zugewiesenen IP-Bereich ausgeschöpft oder es gibt eine in Konflikt stehende Route.
Wenn Sie Ressourcen im IP-Adressbereich erstellen, der für Memorystore for Redis vorgesehen ist, können Sie alle IP-Adressen ausschöpfen. Oder es gibt möglicherweise 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 entfernen Sie die Diskrepanz im Routenkonflikt, um dieses Problem zu beheben. Weitere Informationen finden Sie unter IP-Adressbereich ausgeschö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
einrichten, erstellt Memorystore for Redis eine Netzwerk-Peering-Verbindung mit dem Namen
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 außerdem das Netzwerk-Peering löschen und Sie eine Instanz erstellen, wird 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 in Konflikt stehende Parameter.
Wenn Sie sowohl den Parameter --reserved-ip-range als auch den Parameter --connect-mode=private-service-access verwenden, wird die folgende Fehlermeldung angezeigt:
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 Ihrem Google Cloud Projekt erstellen können, ist begrenzt. Wenn Sie dieses Kontingent überschreiten, wird eine der folgenden Fehlermeldungen angezeigt:
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 gemeinsam genutzte 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 legen ein freigegebene VPC-Netzwerk fest.
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.
Standardmäßig ist der Verbindungsmodus auf Direct Peering festgelegt. Wenn Sie diesen Verbindungsmodus verwenden, wenn Sie eine Instanz erstellen, und außerdem ein freigegebene VPC-Netzwerk aus dem Hostprojekt als Wert für den Parameter --network auswählen, wird die folgende Fehlermeldung angezeigt:
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.
Greifen Sie zur Behebung dieses Problems von einer Compute Engine-VM mit einer IP-Adresse in einem anderen Bereich auf Ihre Instanz zu.
Probleme beim Herstellen einer Verbindung zu Ihrer Instanz von anderen Google Cloud Ressourcen
In diesem Abschnitt werden Probleme erläutert, 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 von serverlosen Umgebungen aus 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 Anforderungen für serverlosen VPC-Zugriff.
Sie können keine Verbindung zu Ihrer Instanz über einen Google Kubernetes Engine-Cluster (GKE) herstellen
Um eine Verbindung zu Ihrer Memorystore for Redis-Instanz über einen GKE-Cluster herzustellen, 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 Bereich „Erweiterte Optionen“ die Option VPC-nativ aus. Weitere Informationen finden Sie unter VPC-nativen Cluster erstellen.
Probleme mit Identity and Access Management (IAM)
In diesem Abschnitt werden IAM-Probleme erläutert, 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, wird möglicherweise die folgende Fehlermeldung angezeigt:
(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 Dienstkonto cloud-redis 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 Netzwerkpartitionen
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.
Bei diesem Problem wird möglicherweise eine Fehlermeldung zu Verbindungsproblemen angezeigt, z. B.:
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 Google Cloud den Support.
Dienstprojekt und Hostprojekt befinden sich nicht im selben VPC-Dienststeuerungsperimeter
Wenn Sie gemeinsam genutzte VPC und einen VPC Service Controls Perimeter 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-Instanz mit Verbindungsclients über das freigegebene VPC-Netzwerk kommunizieren kann.
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.
Die Schaltflächen „Importieren“ und „Exportieren“ sind in der Google Cloud Konsole 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 entweder die Google Cloud Konsole oder die Befehlszeile für 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.
Probleme mit der Google Cloud CLI beheben
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 Standard-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 für die eingeschränkte Freigabe von Domains
Je nachdem, wann Ihre Instanz erstellt wurde, verwendet Memorystore for Redis eines von zwei verschiedenen Dienstkontoformaten. Informationen dazu, welches Dienstkontoformat Ihre Instanz verwendet, finden Sie unter Dienstkontoformat für Memorystore for Redis.
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 wird möglicherweise der folgende Fehler angezeigt:
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 entsprechende Dienstkontoformat, das mit der Organisationsrichtlinie kompatibel ist. Wenn es wichtig ist, die Cacheinhalte beizubehalten, können Sie einen Export durchführen, um vorhandene Daten zu sichern, und einen Import in die neue Instanz. Eine neu erstellte Instanz hat eine neue Dienst-IP-Adresse, die in Ihrer Anwendung konfiguriert werden muss.
- Zugriff auf das Konto erzwingen: Verwenden Sie diese Option nur, wenn es nicht möglich ist, Ihre Instanz neu zu erstellen.