Heim  >  Artikel  >  Datenbank  >  Was ist eine langsame Redis-Abfrage?

Was ist eine langsame Redis-Abfrage?

藏色散人
藏色散人Original
2020-11-04 17:12:143559Durchsuche

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.

Was ist eine langsame Redis-Abfrage?

Empfohlen: „Redis-Tutorial

Was ist eine langsame Abfrage?

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:

  1. Befehl senden
  2. Befehlswarteschlange
  3. Befehlsausführung
  4. Ergebnisse zurückgeben

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.

Was ist ein langsames Abfrageprotokoll?

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.

Wie erhalte ich ein langsames Abfrageprotokoll?

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个属性组成:

  1. 唯一标识ID
  2. 命令执行的时间戳
  3. 命令执行时长
  4. 执行的命名和参数

如何获取慢查询日志的长度?

可以使用slowlog len命令获取慢查询日志的长度,比如:

> slowlog len
(integer) 121

在上例中,当前Redis中有121条慢查询日志。

如何清理慢查询日志?

可以使用slowlog reset

> slowlog len
(integer) 121
> slowlog reset
OK
> slowlog len
(integer) 0
Aus dem obigen Beispiel können Sie sehen, dass jedes langsame Abfrageprotokoll aus 4 Attributen besteht:

Eindeutige Identifikations-ID

    Zeitstempel der Befehlsausführung
  1. Befehlsausführungsdauer
  2. Benennung und Parameter der Ausführung

Wie erhalte ich die Länge des langsamen Abfrageprotokolls?

Sie können den Befehl 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.

Wie lösche ich langsame Abfrageprotokolle?

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
OK
Wie 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:🎜
  1. 修改Redis配置文件。比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
slowlog-log-slower-than 1000
slowlog-max-len 1200
  1. 使用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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn