Behandeln von serverseitigen Problemen bei Azure Cache for Redis
In diesem Abschnitt wird die Behandlung von Problemen erläutert, die durch Bedingungen auf einem Azure Cache for Redis-Server oder auf einem der virtuellen Computer verursacht werden, auf denen er gehostet wird.
- Hohe Serverauslastung
- Hohe Speicherauslastung
- Befehle mit langer Ausführungsdauer
- Serverseitige Bandbreitenbegrenzung
Hinweis
Etliche Problembehandlungsschritte in diesem Leitfaden enthalten Anleitungen zum Ausführen von Redis-Befehlen und zum Überwachen verschiedener Leistungsmetriken. Weitere Informationen und Anleitungen finden Sie in den Artikeln im Abschnitt Weitere Informationen .
Hohe Serverauslastung
Eine hohe Serverauslastung bedeutet, dass der Redis-Server ausgelastet ist und mit Anforderungen nicht Schritt halten kann, was zu Timeouts führt. Überprüfen Sie die Metrik Serverauslastung für Ihren Cache, indem Sie im Ressourcenmenü auf der linken Seite die Option Überwachung auswählen. Der Graph Serverauslastung wird im Arbeitsbereich unter Erkenntnisse angezeigt. Sie können auch unter Metriken einen Metriksatz zur Serverauslastung hinzufügen.
Im Anschluss sind einige Optionen aufgeführt, die Sie bei hoher Serverauslastung in Betracht ziehen können.
Hoch- oder Aufskalieren
Skalieren Sie auf, um weitere Shards hinzuzufügen, sodass die Last auf mehrere Redis-Prozesse verteilt wird. Erwägen Sie auch das Hochskalieren auf einen größeren Cache mit mehr CPU-Kernen. Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Planung für Azure Cache for Redis.
Schnelle Änderungen bei der Anzahl der Clientverbindungen
Weitere Informationen finden Sie unter Vermeiden von Spitzen bei Clientverbindungen.
Zeit- oder speicherintensive Befehle
Dieser Abschnitt wurde verschoben. Weitere Informationen finden Sie unter Zeitintensive Befehle.
Skalierung
Skalierungsvorgänge sind CPU- und arbeitsspeicherintensiv, da sie das Verschieben von Daten auf Knoten und das Ändern der Clustertopologie umfassen können. Weitere Informationen finden Sie unter Skalieren.
Serverwartung
Wenn für Ihre Azure Cache for Redis-Instanz ein Failover ausgeführt wurde, werden alle Clientverbindungen vom Knoten, der ausgefallen ist, an den Knoten übertragen, der noch ausgeführt wird. Bei der Serverauslastung können aufgrund der höheren Verbindungsanzahl Spitzen auftreten. Sie können versuchen, Ihre Clientanwendungen neu zu starten, damit alle Clientverbindungen neu erstellt und auf die beiden Knoten verteilt werden.
Hohe Speicherauslastung
Eine Arbeitsspeicherauslastung auf dem Server kann zu verschiedenen Leistungsproblemen führen, die die Verarbeitung von Anforderungen verzögern. Wenn eine Arbeitsspeicherauslastung auftritt, werden Daten vom System auf den Datenträger ausgelagert, wodurch es zu einer erheblichen Verlangsamung des Systems kommen kann.
Im Folgenden finden Sie mögliche Ursachen für eine hohe Arbeitsspeicherauslastung:
- Der Cache ist bis fast zu seiner maximalen Kapazität mit Daten gefüllt.
- Der Redis-Server stellt eine hohe Fragmentierung des Arbeitsspeichers fest.
Eine Fragmentierung tritt wahrscheinlich auf, wenn ein Auslastungsmuster Daten mit sehr unterschiedlichen Größen speichert. So kann beispielsweise eine Fragmentierung auftreten, wenn Daten zwischen 1 KB und 1 MB groß sind. Wenn ein 1-KB-Schlüssel aus dem vorhandenen Arbeitsspeicher gelöscht wird, passt an dieselbe Stelle kein 1-MB-Schlüssel, was zu einer Fragmentierung führt. Wenn ein 1-MB-Schlüssel gelöscht und ein 1,5-MB-Schlüssel hinzugefügt wird, passt auch dieser nicht in den vorhandenen beanspruchten Arbeitsspeicher. Dies verursacht nicht genutzten freien Arbeitsspeicher und führt zu einer größeren Fragmentierung.
Wenn der Wert used_memory_rss
größer als das 1,5-Fache der Metrik used_memory
ist, tritt im Arbeitsspeicher eine Fragmentierung auf. Die Fragmentierung kann in folgenden Fällen Probleme verursachen:
- Die Speicherauslastung liegt nahe am maximalen Grenzwert für den Cache, oder
UsedMemory_RSS
ist höher als der Grenzwert für den maximalen Arbeitsspeicher und führt damit möglicherweise zu Seitenfehlern im Arbeitsspeicher.
Wenn ein Cache fragmentiert ist und unter hoher Arbeitsspeicherauslastung ausgeführt wird, führt das System ein Failover durch, um zu versuchen, den RSS-Arbeitsspeicher (Resident Set Size) wiederherzustellen.
Redis macht mithilfe des Befehls INFO die beiden Statistiken used_memory
und used_memory_rss
verfügbar, mit denen Sie dieses Problem identifizieren können. Sie können mithilfe des Portals diese Metriken anzeigen.
Überprüfen Sie, ob die Werte maxmemory-reserved
und maxfragmentationmemory-reserved
entsprechend festgelegt sind.
Sie können mehrere Änderungen vornehmen, um die Speicherauslastung in einem gesunden Rahmen zu halten:
- Konfigurieren Sie eine Speicherrichtlinie , und legen Sie Ablauffristen für Ihre Schlüssel fest. Diese Richtlinie reicht möglicherweise nicht aus, wenn Fragmentierung vorliegt.
- Konfigurieren Sie einen Wert für „maxmemory-reserved“ , der groß genug ist, um die Speicherfragmentierung zu kompensieren.
- Erstellen von Warnungen bei Metriken wie „verwendeter Arbeitsspeicher“, um frühzeitig über mögliche Beeinträchtigungen benachrichtigt zu werden.
- Skalieren Sie Ihr System auf einen größeren Cache mit größerer Arbeitsspeicherkapazität hoch. Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Planung für Azure Cache for Redis.
Empfehlungen zur Speicherverwaltung finden Sie unter Speicherverwaltung.
Befehle mit langer Ausführungsdauer
Dieser Abschnitt wurde verschoben. Weitere Informationen finden Sie unter Zeitintensive Befehle.
Serverseitige Bandbreitenbegrenzung
Dieser Abschnitt wurde verschoben. Weitere Informationen finden Sie unter Einschränkung der Netzwerkbandbreite.