Dieser Artikel vermittelt Ihnen relevantes Wissen über Redis. Er stellt hauptsächlich verwandte Themen vor, warum Redis langsam ist, und wie man das Problem behebt. Ich hoffe, dass es für alle hilfreich ist.
Empfohlenes Lernen: Redis-Video-Tutorial
Ideen zur Fehlerbehebung
Wenn Ihre Redis-Instanz eine Speicherobergrenze von maxmemory hat, kann dies auch zu Redis führen langsamer werden.
Wenn wir Redis als reinen Cache verwenden, legen wir normalerweise eine Speicherobergrenze von maxmemory für diese Instanz fest und legen dann eine Dateneliminierungsstrategie fest. Wenn der Speicher der Instanz den maximalen Speicher erreicht, stellen Sie möglicherweise fest, dass sich die Vorgangsverzögerung jedes Mal erhöht, wenn Sie danach neue Daten schreiben.
Gründe für die Verlangsamung
Wenn der Redis-Speicher den maximalen Speicher erreicht, muss Redis vor jedem Schreiben neuer Daten zunächst einen Teil der Daten aus der Instanz entfernen, um den Speicher der gesamten Instanz unter dem maximalen Speicher zu halten, und erst dann können neue Daten eingeschrieben werden.
Diese Logik des Herauswerfens alter Daten braucht ebenfalls Zeit, und die konkrete Zeitdauer hängt von der von Ihnen konfigurierten Eliminierungsstrategie ab:
Die Eliminierungsstrategie wurde auf zufällige Eliminierung geändert, was viel schneller ist als LRU (abhängig von der Geschäftssituation).
Instanz aufteilen und eliminieren Schlüssel Der Druck wird auf mehrere Instanzen verteiltAb 2.6.38 unterstützt der Linux-Kernel den Memory Huge Page-Mechanismus, der es Anwendungen ermöglicht, Speicher vom Betriebssystem in Einheiten von 2 MB zu beantragen.
Die Speichereinheit, die die Anwendung beim Betriebssystem anwendet, wird jedes Mal größer, aber das bedeutet auch, dass die Zeit, die für die Beantragung des Speichers benötigt wird, länger wird.Lösung
Schalten Sie den riesigen Seitenmechanismus aus.
Zuerst müssen Sie prüfen, ob auf der Redis-Maschine große Seiten aktiviert sind:
$ cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
Wenn die Ausgabeoption immer lautet, bedeutet dies, dass der Mechanismus für große Seiten derzeit aktiviert ist und wir ihn deaktivieren müssen:
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
In Tatsächlich bietet das Betriebssystem den Vorteil des Speicher-Riesenseitenmechanismus, da er die Häufigkeit reduzieren kann, mit der Anwendungen in bestimmten Programmen Speicher beantragen.
Aber für eine Datenbank wie Redis, die äußerst empfindlich auf Leistung und Latenz reagiert, hoffen wir, dass Redis bei jeder Speicheranforderung so kurz wie möglich benötigt. Daher empfehle ich nicht, diesen Mechanismus auf der Redis-Maschine zu aktivieren .
Ideen zur Fehlerbehebung
Wenn Sie feststellen, dass Redis plötzlich sehr langsam wird und jeder Vorgang Hunderte von Millisekunden oder sogar Sekunden dauert, müssen Sie prüfen, ob Redis Swap verwendet wird, und zwar in diesem Fall In diesem Fall ist Redis grundsätzlich nicht in der Lage, leistungsstarke Dienste bereitzustellen.
Ursachen der Verlangsamung
Was ist Swap? Warum führt die Verwendung von Swap zu einer Verschlechterung der Redis-Leistung?
Wenn Sie etwas über das Betriebssystem wissen, wissen Sie, dass das Betriebssystem zulässt, dass ein Teil der Daten im Speicher auf die Festplatte verschoben wird, um die Speichernutzung zu puffern, um die Auswirkungen von unzureichendem Speicher auf Anwendungen zu mildern Der Bereich, der auf die Festplatte ausgelagert wird, ist Swap.
Das Problem besteht darin, dass Redis, wenn die Daten im Speicher auf die Festplatte verschoben werden, sie erneut von der Festplatte lesen muss. Die Geschwindigkeit des Zugriffs auf die Festplatte ist hunderte Male langsamer als die des Speicherzugriffs! Insbesondere für eine Datenbank wie Redis, die extrem hohe Leistungsanforderungen hat und äußerst leistungsempfindlich ist, ist diese Betriebsverzögerung inakzeptabel.
Zu diesem Zeitpunkt müssen Sie die Speichernutzung der Redis-Maschine überprüfen, um zu bestätigen, ob Swap verwendet wird. Sie können folgendermaßen überprüfen, ob der Redis-Prozess Swap verwendet:
# 先找到 Redis 的进程 ID $ ps -aux | grep redis-server # 查看 Redis Swap 使用情况 $ cat /proc/$pid/smaps | egrep '^(Swap|Size)'
Das Ausgabeergebnis lautet wie folgt:
Size: 1256 kB Swap: 0 kB Size: 4 kB Swap: 0 kB Size: 132 kB Swap: 0 kB Size: 63488 kB Swap: 0 kB Size: 132 kB Swap: 0 kB Size: 65404 kB Swap: 0 kB Size: 1921024 kB Swap: 0 kB ...
Dieses Ergebnis listet die Speichernutzung des Redis-Prozesses auf. E Jede Zeile von SIZE gibt einen von Redis verwendeten Speicher an, und der Swap unter SIZE zeigt an, dass die Größe dieser Größe auf der Festplatte ersetzt wurde. Wenn diese beiden Werte gleich sind, bedeutet dies, dass die Daten dieses Speichers Daten wurden alle vollständig auf die Festplatte ausgelagert.
Wenn beispielsweise nur eine kleine Datenmenge auf die Festplatte ausgelagert wird und jeder Swap einen kleinen Teil der entsprechenden Größe einnimmt, sind die Auswirkungen nicht groß. Wenn Hunderte von Megabyte oder sogar GB Speicher auf die Festplatte ausgelagert werden, müssen Sie wachsam sein. In diesem Fall wird die Leistung von Redis definitiv stark sinken.
LösungErhöhen Sie den Speicher der Maschine, damit Redis über genügend Speicher verfügt.
Es ist ersichtlich, dass die Leistung von Redis zu diesem Zeitpunkt bei Verwendung von Swap durch Redis im Grunde nicht den hohen Leistungsanforderungen gerecht werden kann (Sie können verstehen, dass die Kampfkunst abgeschafft wurde), sodass Sie diese Situation auch im Voraus verhindern müssen.
Um dies zu verhindern, müssen Sie die Speicher- und Swap-Nutzung der Redis-Maschine überwachen, einen Alarm auslösen, wenn der Speicher nicht ausreicht oder Swap verwendet wird, und rechtzeitig dagegen vorgehen.
Ideen zur Fehlerbehebung
Wenn Sie die oben genannten Szenarien, die zu Leistungsproblemen führen, vermieden haben und Redis lange Zeit stabil läuft, aber nach einem bestimmten Zeitpunkt der Betrieb von Redis begann plötzlich langsamer zu werden und wird immer langsamer. Was ist der Grund dafür?
An dieser Stelle müssen Sie prüfen, ob die Netzwerkbandbreite der Redis-Maschine überlastet ist und ob es eine Instanz gibt, die die Netzwerkbandbreite der gesamten Maschine ausfüllt.
Gründe für eine Verlangsamung
Wenn die Netzwerkbandbreite überlastet ist, kommt es auf dem Server zu Paketversandverzögerungen, Paketverlusten usw. auf der TCP- und Netzwerkebene.
Zusätzlich zum Betriebsspeicher liegt die hohe Leistung von Redis im Netzwerk-IO. Wenn es einen Engpass im Netzwerk-IO gibt, wird dies auch die Leistung von Redis ernsthaft beeinträchtigen.
Lösung
1) Häufige kurze Verbindungen
Ihre Geschäftsanwendung sollte lange Verbindungen verwenden, um Redis zu betreiben, um häufige kurze Verbindungen zu vermeiden.
Häufige kurze Verbindungen führen dazu, dass Redis viel Zeit damit verbringt, Verbindungen herzustellen und freizugeben. Der Drei-Wege-Handshake und die Vier-Wege-Welle von TCP erhöhen auch die Zugriffsverzögerungen.
2) Betriebs- und Wartungsüberwachung
Ich habe bereits erwähnt, dass es wichtig ist, bei der Überwachung gute Arbeit zu leisten, wenn man die Verlangsamung von Redis im Voraus vorhersagen möchte.
Bei der Überwachung handelt es sich eigentlich um die Erfassung verschiedener Laufzeitindikatoren von Redis. Der übliche Ansatz besteht darin, dass das Überwachungsprogramm regelmäßig die INFO-Informationen von Redis sammelt und dann eine Datenanzeige und einen Alarm basierend auf den Statusdaten in den INFO-Informationen durchführt.
Was ich Sie hier daran erinnern muss, ist, dass Sie es nicht auf die leichte Schulter nehmen dürfen, einige Überwachungsskripte zu schreiben oder Open-Source-Überwachungskomponenten zu verwenden.
Versuchen Sie beim Schreiben von Überwachungsskripten für den Zugriff auf Redis, lange Verbindungen zum Sammeln von Statusinformationen zu verwenden, um häufige kurze Verbindungen zu vermeiden. Gleichzeitig müssen Sie auch darauf achten, die Häufigkeit des Zugriffs auf Redis zu kontrollieren, um Geschäftsanfragen nicht zu beeinträchtigen.
Bei der Verwendung einiger Open-Source-Überwachungskomponenten ist es am besten, die Implementierungsprinzipien dieser Komponenten zu verstehen und diese Komponenten richtig zu konfigurieren, um Fehler in den Überwachungskomponenten zu vermeiden, die in kurzer Zeit zu einer großen Anzahl von Redis-Vorgängen führen und Auswirkungen haben die Leistung von Redis.
, was dazu führt, dass Redis langsam reagiert.
3) Andere Programme konkurrieren um Ressourcen
Das Letzte, was ich Sie daran erinnern muss, ist, dass Ihre Redis-Maschine am besten für die Bereitstellung von Redis-Instanzen geeignet ist. Versuchen Sie, eine relativ ruhige Umgebung bereitzustellen for Redis“-Umgebung, um zu verhindern, dass andere Programme CPU-, Speicher- und Festplattenressourcen belegen, was dazu führt, dass Redis nicht genügend Ressourcen zugewiesen werden.
Empfohlenes Lernen: Redis-Video-Tutorial
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Gründe sprechen, warum Redis langsam ist, und wie Sie das Problem beheben können.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!