Die langsame Redis-Abfrage bezieht sich auf eine Abfrage mit einer relativ langen Befehlsausführungszeit. Das Protokoll der langsamen Abfrage besteht darin, dass der Redis-Server die Ausführungszeit jedes Befehls vor und nach der Ausführung berechnet im Protokoll aufgezeichnet. Das Protokoll wird aufgezeichnet. Es zeigt den Zeitpunkt an, zu dem die langsame Abfrage erfolgt, sowie die Ausführungszeit, bestimmte Befehle und andere Informationen.
Empfohlen: „Redis-Tutorial“
Eine langsame Abfrage ist, wie der Name schon sagt, eine relativ langsame Abfrage, aber wo genau ist sie langsam? Lassen Sie uns zunächst den gesamten Prozess der Redis-Befehlsausführung verstehen:
In der Definition einer langsamen Abfrage ist der Zeitraum, in dem die Statistik relativ langsam ist bezieht sich auf Dies ist der Befehl zum Ausführen dieses Schritts. Das Fehlen langsamer Abfragen bedeutet nicht, dass der Client keine Zeitüberschreitungsprobleme hat. Es kann zu Verzögerungen bei der Netzwerkübertragung kommen oder es können mehr Befehle in der Warteschlange stehen.
Aufgrund des Warteschlangenmechanismus der Befehlsausführung in Redis führen langsame Abfragen zu einer kaskadierenden Blockierung anderer Befehle. Wenn auf dem Client ein Anforderungszeitlimit auftritt, muss daher überprüft werden, ob zu diesem Zeitpunkt eine langsame Abfrage vorliegt. um das Problem zu analysieren, das durch die Blockierung der langsamen Befehlskaskade verursacht wird.
Das langsame Abfrageprotokoll ist ein Protokoll, in dem der Redis-Server die Ausführungszeit jedes Befehls vor und nach der Ausführung des Befehls berechnet. Wenn er einen bestimmten Schwellenwert überschreitet, wird er aufgezeichnet. Das Protokoll zeichnet den Zeitpunkt der langsamen Abfrage sowie die Ausführungszeit, bestimmte Befehle und andere Informationen auf. Es kann verwendet werden, um dem Entwicklungs-, Betriebs- und Wartungspersonal dabei zu helfen, langsame Abfragen im System zu lokalisieren.
Sie können den Befehl slowlog get
verwenden, um das langsame Abfrageprotokoll abzurufen. Sie können auch eine Zahl nach slowlog get
hinzufügen, um die Anzahl der abzurufenden langsamen Abfrageprotokolle anzugeben. Erhalten Sie beispielsweise 3 langsame Abfrageprotokolle: slowlog get
命令获取慢查询日志,在slowlog get
后面还可以加一个数字,用于指定获取慢查询日志的条数,比如,获取3条慢查询日志:
> slowlog get 3 1) 1) (integer) 6107 2) (integer) 1616398930 3) (integer) 3109 4) 1) "config" 2) "rewrite" 2) 1) (integer) 6106 2) (integer) 1613701788 3) (integer) 36004 4) 1) "flushall" 3) 1) (integer) 6105 2) (integer) 1608722338 3) (integer) 20449 4) 1) "scan" 2) "0" 3) "MATCH" 4) "*comment*" 5) "COUNT" 6) "10000"
从上面的例子中,可以看出每一条慢查询日志都有4个属性组成:
可以使用slowlog len
命令获取慢查询日志的长度,比如:
> slowlog len (integer) 121
在上例中,当前Redis中有121条慢查询日志。
可以使用slowlog reset
> slowlog len (integer) 121 > slowlog reset OK > slowlog len (integer) 0Aus dem obigen Beispiel können Sie sehen, dass jedes langsame Abfrageprotokoll aus 4 Attributen besteht:
Eindeutige Identifikations-ID
slowlog len
verwenden, um die Länge des langsamen Abfrageprotokolls abzurufen, zum Beispiel: slowlog-log-slower-than 1000 slowlog-max-len 1200
Im obigen Beispiel gibt es derzeit 121 langsame Abfrageprotokolle in Redis.
Sie können den Befehl slowlog reset
verwenden, um das Protokoll für langsame Abfragen zu löschen, zum Beispiel:
> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OKWie konfiguriere ich die Parameter für langsame Abfragen? Wie oben erwähnt, erfordert eine langsame Abfrage die folgenden zwei Konfigurationen:
Angegebener Schwellenwert für die Befehlsausführungszeit. Speichern Sie die Anzahl langsamer Abfrageprotokolle.
Redis bietet zwei Parameter: slowlog-log-slower-than und slowlog-max-len Als nächstes werden wir diese beiden Parameter im Detail vorstellen. slowlog-log-slower-than🎜🎜slowlog-log-slower-than wird verwendet, um den Schwellenwert der Befehlsausführungszeit anzugeben. Wenn die Ausführungszeit des Befehls diesen Schwellenwert überschreitet, wird dies aufgezeichnet. Seine Einheit ist Mikrosekunden (1 Sekunde = 1000 Millisekunden = 1000000 Mikrosekunden), und der Standardwert ist 10000 Mikrosekunden. Wenn slowlog-log-slower-than auf 0 gesetzt ist, werden alle Befehle protokolliert. Wenn slowlog-log-slower-than auf einen Wert kleiner als 0 gesetzt ist, werden keine Befehle im Protokoll aufgezeichnet. 🎜🎜In einer tatsächlichen Produktionsumgebung muss diese Konfiguration basierend auf der Redis-Parallelität angepasst werden. Da Redis einen einzelnen Thread verwendet, um auf Befehle zu reagieren, kann Redis bei einer Befehlsausführungszeit von mehr als 1000 Mikrosekunden bis zu weniger als 1000 OPS unterstützen. Daher wird empfohlen, Redis für Szenarien mit hoher Parallelität auf 🎜1000 Mikrosekunden🎜 einzustellen . 🎜🎜slowlog-max-len🎜🎜slowlog-max-len wird verwendet, um die maximale Anzahl der zu speichernden langsamen Abfrageprotokolle anzugeben. Tatsächlich verwendet Redis eine Liste zum Speichern langsamer Abfrageprotokolle, und slowlog-max-len ist die maximale Länge dieser Liste. Wenn ein neuer Befehl die langsame Abfragebedingung erfüllt, wird er in diese Liste eingefügt. Wenn die Protokollliste für langsame Abfragen die maximale Länge erreicht, wird der zuerst eingefügte Befehl aus der Liste entfernt. Slowlog-max-len ist beispielsweise auf 10 gesetzt. Wenn der 11. Befehl eingefügt wird, wird zuerst der erste Befehl in der Liste entfernt und dann der 11. Befehl zur Liste hinzugefügt. 🎜🎜Das Aufzeichnen langsamer Abfragen bedeutet, dass Redis lange Befehle abschneidet und nicht viel Speicher belegt. In einer tatsächlichen Produktionsumgebung wird empfohlen, die Länge des langsamen Abfrageprotokolls größer anzupassen, um die Möglichkeit zu verringern, dass langsame Abfragen entfernt werden, und um langsame Abfragen bequemer zu lokalisieren. Es kann beispielsweise auf 🎜1000 oder mehr🎜 eingestellt werden. 🎜🎜So konfigurieren Sie🎜🎜Es gibt zwei Möglichkeiten, die Konfiguration in Redis zu ändern:🎜slowlog-log-slower-than 1000 slowlog-max-len 1200
config set
命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
如果要Redis把配置持久化到本地配置文件,需要执行config rewrite
命令。
慢查询指的是命令执行时长比较长的查询。通过slowlog get命令获取慢查询日志;通过slowlog len命令获取慢查询日志的长度;通过slowlog reset命令清理慢查询日志。通过slowlog-log-slower-than配置命令执行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数
Das obige ist der detaillierte Inhalt vonWas ist eine langsame Redis-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!