Redis Latenzgrafik

Redis Latenzgrafik
Redis ist ein weit verbreiteter In-Memory-Datenspeicher, der für eine höhere Leistung gut optimiert ist. Die Geschwindigkeit macht es für Echtzeitanwendungen, Caching und Sitzungsspeicher nützlich. Gleichzeitig bietet Redis mehrere Befehle, die schnell und leistungsoptimiert sind. Trotzdem nehmen einige Redis -Befehle O (N) langsamere Zeitkomplexität an. Die einsthread-Natur von Redis wirft auch Latenzprobleme auf. Redis-Latenz kann in drei Hauptbereiche eingeteilt werden: Kundenlatenz, Befehlslatenz und Roundtrip-Latenz.

Kundenlatenz

Redis wird mit einer Kunden-Server-Architektur geliefert. In einigen Fällen können mehrere Clients versuchen, gleichzeitig eine Verbindung zum Redis -Server herzustellen. Da Redis Single-Threaded ist, wird eine Client-Warteschlange vorgestellt, in der der Server einen Client-Prozess zu einem bestimmten Zeitpunkt bedient. Daher entstand die Latenz der Parallelität. Daher müssen nachfolgende Kunden möglicherweise warten.

Befehlslatenz

Jeder Befehl braucht einige Zeit, um auszuführen. Es kann von Mikrosekunde bis Sekunden variieren. Daher wurde es als Latenzquelle identifiziert. Die meisten Befehle der Redis nehmen konstante oder logarithmische Zeitkomplexität an. Gleichzeitig benötigen einige Befehle die Zeitkomplexität von O (n). Sie sind erheblich langsamer.

Hin- und Rücklatenz

Roundtrip ist die Zeit, die es benötigt, um eine Antwort vom Redis-Server zu erhalten, nachdem ein Befehl auf der Client-Seite ausgeführt wurde. Es kann unterschiedliche Ursachen für die Roundtrip-Latenz wie Netzwerklänge, Gabelbetrieb und OS-Paging geben.

Redis -Latenzüberwachung

Echtzeit-Anwendungen verwenden Redis, wobei die Leistung von entscheidender Bedeutung ist. Daher ist es lohnend, Einblicke in die Redis -Latenz zu erhalten, die hilfreich sein werden, um im Voraus Maßnahmen zu ergreifen. Aus Version 2.8.13, Redis hat die Latenzüberwachungskomponente zu seiner Toolbox hinzugefügt. Diese Komponente kann Latenzspitzen pro Ereignis oder spezifischer Codepfad aufzeichnen.

Latenzereignisse oder Codepfade

Die Latenzereignisse (Code -Pfade) sind nichts anderes als die generischen oder spezifischen Operationen, die von Redis ausgeführt werden, z. Wenn es um die generischen Befehle geht, gibt es zwei wichtige Ereignisse, die von Redis definiert wurden.

  1. Befehl
  2. Fast-Command

Das Ereignis „Fast-Command“ ist für REDIS-Befehle definiert, die o (1) oder o (log n) Zeitkomplexität wie Hset, Hincrby, Hlen usw. enthalten.

Der Codepfad „Befehl“ misst die Latenzspitzen für die anderen Befehle mit O (n) Zeitkomplexität.

Aktivieren der Latenzüberwachung auf dem Redis -Server

Die Latenzwerte hängen von der Natur der Anwendung ab. Eine Anwendung kann 10 Millisekunden als hohe Latenz betrachten. Gleichzeitig betrachtet eine andere Anwendung eine 1 Sekunde als einen hohen Wert. Daher bietet Redis Ihnen die Möglichkeit, den Latenzschwellenwert auf dem Server zu definieren. Standardmäßig beträgt der Schwellenwert 0. Es gibt zwei Möglichkeiten, diesen Wert in Redis festzulegen:

  1. Verwenden des Unterbefehls "config Set" in der Laufzeit
  2. Ändern der Redis -Konfigurationsdatei

Der Konfigurationssatz -Unterbefehl
Sie können den Konfigurationssatz -Unterbefehl mit dem Parameter und seinem Wert verwenden, um den Schwellenwert festzulegen, wie im folgenden gezeigt. Hier setzen wir es als 500 Millisekunden.

Konfiguration Set Latency-Monitor-Schwelle 500

Änderung der Redis.Conf -Datei
Wir können den Redis -Server starten, indem wir alle Konfigurationen in einer Konfigurationsdatei namens „Redis“ bereitstellen.conf ”. Im Abschnitt „Latenzmonitor“ können Sie den Parameterwert „Latenzmonitor-Schwellenwert“ entsprechend festlegen.

Es wird empfohlen, den Redis -Server nach Änderung der Konfigurationsdatei neu zu starten.

Der Unterbefehl Latenzgrafik

Der Befehl „Latenz“ bietet mehrere Unterbefehle, um ereignisbasierte Latenzinformationen abzurufen. Einer der beliebten Befehle ist „Latenzgrafik“. Es zeichnet ein Diagramm gegen die Zeit, als das Ereignis passiert ist. Dieses Diagramm basiert auf ASCII -Symbolen und reicht von minimaler Latenzwert bis maximal. Die Latenzspikes werden zwischen den Latenzen von Min und Max normalisiert.

Verwenden wir den Befehl „Debugg Sleep“, um zu überprüfen, wie die Latenzdiagramminformationen generiert werden.

Syntax

Latenzdiagramm

Der Parameter „event_name“ kann jedes Ereignis sein, das durch das REDIS-Latenzüberwachungsframework definiert ist, z. B. Befehl, Fast-Command, Gabel usw.

Beispiel 01 - Anwendungen mit Latenz unterhalb der Schwelle

Verwenden wir den Befehl „Debugg Sleep“, um einige Latenzspikes zu generieren. Es wird bis zur angegebenen Auszeit schlafen gehen. Da die Latenzschwelle 500 ms beträgt, werden wir Schlafbefehle mit einer Auszeit von weniger als 500 ms ausstellen.

Schlafdebuggen .1
Schlafdebuggen .2
Schlafdebuggen .3

Als nächstes werden wir den Befehl Latency Graph wie im Folgenden dargestellt:

Latenzgrafikbefehl

Das würde idealerweise das Latenzdiagramm im ASCII-Stil für die vorherigen Befehle erzeugen. Da die Ausführungszeit des Befehls niedriger als der Schwellenwert in allen drei „Debug -Sleep“ -Behandeln ist, generiert Redis keine Latenzspikes. Wenn wir davon ausgehen, dass dies unsere Echtzeit-Anwendung ist, sind Sie alle gut. Es sind keine Latenzprobleme beigefügt.

Ausgang:

Wie erwartet sind für dieses spezielle Ereignis keine Muster verfügbar.

Beispiel 02 - Anwendungen mit Latenz größer als der Schwellenwert

Lassen Sie uns einige Debug -Befehle mit einem Zeitüberschreitungswert ausgeben, der größer ist als der Schwellenwert. Normalerweise ist es besser, alle vorherigen Latenzspikes vor dem nächsten Befehlssatz zurückzusetzen, wie im Folgenden dargestellt:

Befehl Latenzsatzreset

Als nächstes werden wir die Debug -Sleep -Befehle mit einem Zeitlimitwert von mehr als 500 ms ausstellen.

Schlafdebuggen .7
Schlafdebuggen .9
Debugug Sleep 1

Ausgang:

Wie erwartet wurde das Diagramm im ASCII-Stil von Redis erzeugt. Das "_" bezeichnet den niedrigsten Latenzwert, und das Symbol "#" bezeichnet die höchste Latenzspitze, die innerhalb der letzten 20 Sekunden stattgefunden hat. Diese Grafik kann vertikal interpretiert werden. Jede Spalte ist für ein Ereignis, das in den letzten Sekunden, Minuten oder Tagen aufgetreten ist. Die linkste Spalte kann als das Ereignis interpretiert werden, das vor 20 Sekunden stattgefunden hat.

Abschluss

Redis wird als Datenspeicher für Echtzeitanwendungen verwendet. Daher sind die Leistungsaspekte von entscheidender Bedeutung. Das Latenzüberwachungsrahmen ist eine von Redis angebotene Komponente zur Überwachung der Latenzspitzen für vordefinierte Ereignisse. Der Befehl „Latenzgrafikbefehl“ kann verwendet werden, um die Latenzspitzen im ASCII-Stil für einen bestimmten Zeitraum zu erzeugen. Es wird verwendet, um die Latenztrends in Ihrer Bewerbung zu identifizieren und die erforderlichen Maßnahmen im Voraus zu ergreifen. Die Latenzspikes werden erzeugt, wenn die Latenzzeit größer als der Schwellenwert ist. Der Latenzschwellenwert kann sich von einer Anwendung auf eine andere basierend auf der Natur unterscheiden.