Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Die 6 besten kostenlosen Redis-Speicheranalysetools

Wenn es darum geht, die Speichernutzung einer Redis-Instanz zu analysieren, gibt es auf dem Markt viele kostenlose und Open-Source-Tools sowie einige kostenpflichtige Produkte. Einige der beliebtesten sind Jacks (in allen Gassen), aber wenn Sie nach einer tieferen Analyse Ihrer Gedächtnisprobleme suchen, sind Sie vielleicht besser dran mit einem der zielgerichteteren und weniger bekannten Tools.

In diesem Beitrag haben wir eine Liste der 6 besten kostenlosen Tools zusammengestellt, die wir für die Analyse der Speichernutzung unserer Redis-Instanzen am nützlichsten fanden:

  1. Redis Memory Analyzer (RMA)
  2. Redis-Sampler
  3. RDB-Tools
  4. Redis-Audit
  5. Redis-Toolkit
  6. Ernte

1) Redis Memory Analyzer

Redis Memory Analyzer (RMA) ist einer der umfassendsten FOSS-Speicheranalysatoren für Redis. Es unterstützt drei verschiedene Detailstufen:

  • Global – Übersicht über Informationen zur Speichernutzung.
  • Scanner – Informationen zur Speichernutzung auf Schlüsselraum-/Präfixebene auf höchster Ebene – mit anderen Worten, es wird das kürzeste gemeinsame Präfix verwendet.
  • RAM – Schlüsselraum/Präfix der niedrigsten Ebene – mit anderen Worten, das längste gemeinsame Präfix wird verwendet.

Jeder Modus hat seine eigenen Verwendungszwecke – Sie können weitere Details in der RMA ReadMe erhalten.

RMA – Globaler Modus

Im globalen Modus bietet RMA einige allgemeine Statistiken, wie die Anzahl der Schlüssel, den Systemspeicher, die Größe des residenten Satzes, die Größe des Schlüsselraums usw. Eine einzigartige Funktion ist die „ Keyspace Overhead“, das ist der Speicher, der vom Redis-System verwendet wird, um Keyspace-bezogene Informationen wie Zeiger für die Listendatenstrukturen zu speichern.

RMA – Scannermodus

Im Scanner-Modus erhalten wir einen Überblick über unseren Schlüsselraum. Es gibt die High-Level-Namespaces an (also werden a:b:1 und a:c:1 als a:* zusammengefasst), zusammen mit den Typen seiner Elemente und dem Prozentsatz des Speichers, der von diesem Namespace verbraucht wird. Es ist hilfreich, mit diesen Informationen zu beginnen und dann das „RAM“-Verhalten in Verbindung mit dem Namespace-Muster zu verwenden, um eine detaillierte Analyse durchzuführen.

RMA – RAM-Modus

Im RAM-Modus erhalten wir den Speicherverbrauch auf Keyspace-Ebene, wie er von den meisten anderen FOSS-Speicheranalysatoren bereitgestellt wird. Hier werden also a:b:1 und a:c:1 separat als a:b:* und a:c:* genommen und wir erhalten detaillierte Informationen über den verwendeten Speicher, die tatsächliche Datengröße, den Overhead, die Codierung, die minimale und maximale TTL usw. Dies hilft, die größten Speicherfresser in unserem System zu lokalisieren.

Leider wird dieses Tool nicht immer aktualisiert (der letzte Commit auf GitHub liegt mehr als ein Jahr zurück). Trotzdem ist dies einer der besten, die wir für eine detaillierte Analyse gefunden haben.

RMA-Installation und -Nutzung:

RMA erfordert die Installation von Python und PIP auf dem System (beide sind für alle gängigen Betriebssysteme verfügbar). Sobald sie installiert sind, können Sie einen einzigen Befehl ausführen, um die RDB-Tools zu installieren – `pip install rma`

Es ist ziemlich einfach, es über die Befehlszeile zu verwenden. Die Syntax ist `rma [-s HOST] [-p PORT] [-a PASSWORT] [-d DB] [-m zu vergleichendes Muster] [-l Anzahl zu scannender Schlüssel] [-b VERHALTEN] [-t Komma-getrennte-Liste-der-zu-scannenden-Datentypen]`

RMA-Profis:

  • Funktioniert in Echtzeit.
  • Verwendet den Scan-Befehl, um die Datenbank zu durchlaufen, daher ist die Auswirkung auf die Leistung begrenzt und die Analyse ist sehr genau.
  • Gut dokumentiert – es ist einfach, Anwendungsbeispiele zu finden.
  • Unterstützt robuste Anpassungs- und Filteroptionen, einschließlich der Analyse nur bestimmter Datentypen oder der Berücksichtigung nur von Schlüsseln, die einem bestimmten Muster entsprechen.
  • Kann Details auf verschiedenen Ebenen bereitstellen – Namensräume, Schlüssel oder globale Werte.
  • Einzigartig unter allen Tools, die wir geprüft haben, da es den Overhead der Datenstruktur anzeigt (d. h. wie viel Speicher verwendet wird, um interne Redis-Informationen wie die Zeiger für einen Listendatentyp zu speichern ).

RMA-Nachteile:

  • Unterstützt kein probabilistisches Sampling. Das lineare Scannen der Datenbank kann bei großen Datenbanken sehr langsam sein; Es besteht die Möglichkeit, den Scanvorgang zu stoppen, sobald eine bestimmte Anzahl von Schlüsseln zurückgegeben wurde, um die Leistung zu verbessern.
  • Die Ausgabe enthält viele Details; Obwohl es für Experten hilfreich ist, kann es nur dazu dienen, Anfänger zu verwirren.

2) Redis-Sampler

Redis Sampler ist ein sehr leistungsfähiges Tool, das tiefe Einblicke in die Speichernutzung einer Redis-Instanz geben kann. Es wird von Antirez, dem Entwickler hinter Redis, gepflegt, und dieses tiefe Wissen über Redis zeigt sich in diesem Tool. Das Tool wird nicht sehr häufig aktualisiert – aber es werden sowieso nicht viele Probleme gemeldet.

Redis Sampler führt einen probabilistischen Scan der Datenbank durch und meldet die folgenden Informationen:

  • Die prozentuale Verteilung von Schlüsseln auf verschiedene Datentypen – basierend auf der Anzahl von Schlüsseln und nicht auf der Größe von Objekten.
  • Die größten Schlüssel vom Typ String, basierend auf Strlen und dem Prozentsatz des Speicherverbrauchs.
  • Für alle anderen Datentypen werden die größten Schlüssel berechnet und als zwei separate Listen angezeigt:eine basierend auf der Größe des Objekts und eine andere basierend auf der Anzahl der Elemente in der Objekt.
  • Für jeden Datentyp wird auch eine „Potenz-von-2-Verteilung“ angezeigt. Dies ist wirklich nützlich, um die Größenverteilung innerhalb eines Datentyps zu verstehen. Die Ausgabe gibt im Wesentlichen an, wie viel Prozent der Schlüssel eines bestimmten Typs eine Größe im Bereich> 2^x und <=2^x+1 haben.

Installation und Verwendung des Redis-Samplers:

Dies ist ein einzelnes Ruby-Skript. Es erfordert, dass Ruby bereits installiert ist. Sie müssen auch `rubygems` und `redis` Gems installieren. Die Verwendung ist ziemlich einfach – führen Sie von der Befehlszeile aus `./redis-sampler.rb `

aus

Vorteile des Redis-Samplers:

  • Sehr einfach zu verwenden – keine Optionen zum Untersuchen und Verstehen.
  • Die Ausgabe ist auch für Anfänger leicht verständlich, hat aber genug Informationen für sehr detaillierte Analysen einer Redis-Instanz durch Experten. Die Bereiche sind klar abgegrenzt und einfach herauszufiltern.
  • Funktioniert auf allen Redis-Versionen.
  • Verwendet keine privilegierten Befehle wie DEBUG OBJECT, daher kann es auf jedem System verwendet werden, einschließlich ElastiCache von Amazon.
  • Es verwendet datentypspezifische Längenbefehle, um die Datengröße zu identifizieren, sodass die gemeldete Nutzung nicht von der Serialisierung beeinflusst wird.
  • Funktioniert mit Live-Daten. Obwohl empfohlen wird, auf der Loopback-Schnittstelle zu laufen, unterstützt es das Sampling von Remote-Systemen.

Redis-Sampler-Nachteile:

  • Wenn die Stichprobengröße höher als die Kardinalität der Datenbank eingestellt ist, werden weiterhin RANDOMKEYS anstelle von SCAN verwendet.
  • Kein Bundle oder Docker-Image verfügbar. Sie müssen Abhängigkeiten manuell installieren (obwohl es positiv ist, dass es nur 2 Abhängigkeiten gibt).
  • Meldet die Datengröße, die aufgrund von Datenstrukturspeicher-Overheads nicht genau mit dem im RAM belegten Speicherplatz übereinstimmt.
  • Funktioniert nicht standardmäßig, wenn Ihre Redis-Instanz eine Authentifizierung erfordert. Sie müssen das Skript so ändern, dass es ein Passwort akzeptiert; in der einfachsten Form können Sie suchen nach:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    und ändern Sie es in:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :Passwort => „hier-Ihr-Passwort-hinzufügen“)
Sehen Sie sich die Top 6 der kostenlosen #Redis Speicheranalyse-Tools anClick To Tweet

3) RDB-Tools

RDB Tools ist eine sehr nützliche Suite von Tools für jeden ernsthaften Redis-Administrator. Es gibt ein Tool für fast jeden Anwendungsfall, den wir uns vorstellen können, aber in diesem Beitrag konzentrieren wir uns ausschließlich auf das Speicheranalyse-Tool.
RDB Tools ist zwar bei weitem nicht so umfassend wie RMA oder Redis Sampler, bietet aber 3 wichtige Informationen:

1) Alle Schlüssel, bei denen der Wert eine (serialisierte) Größe von mehr als B Bytes hat [B spezifiziert durch Benutzer].

2) Die größten N-Tasten [N vom Benutzer angegeben].

3) Größe eines bestimmten Schlüssels:wird live aus der Datenbank gelesen.

Diese Suite hat viele aktive Mitwirkende auf GitHub und wird ziemlich häufig aktualisiert. RDB Tools ist auch im Internet gut dokumentiert. Der Betreuer Sripathikrishnan ist in der Redis-Community für die vielen Tools bekannt, die er im Laufe der Jahre bereitgestellt hat.

Installation und Verwendung von RDB-Tools:

RDB Tools erfordert die Installation von Python und PIP auf dem System (beide sind für alle gängigen Betriebssysteme verfügbar). Sobald sie installiert sind, können Sie einen einzigen Befehl ausführen, um die RDB-Tools zu installieren – ` pip install rdbtools python-lz`

Die Verwendung ist ziemlich einfach:

  • Um die 200 größten Schlüssel zu erhalten:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • So erhalten Sie alle Schlüssel, die größer als 128 Byte sind:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Um die Größe eines Schlüssels zu erhalten:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Vorteile von RDB-Tools:

  • Gibt eine CSV-Datei aus, die mit anderen FOSS-Tools verwendet werden kann, um Datenvisualisierungen einfach zu erstellen, und kann auch in RDBMS-es importiert werden, um Analysen auszuführen.
  • Sehr gut dokumentiert.
  • Unterstützt Anpassungs- und Filteroptionen, sodass Sie nützlichere Berichte erhalten.

RDB-Tools Nachteile:

  • Ihre Analyse funktioniert nicht mit Live-Daten; Sie müssen einen RDB-Dump erstellen. Daher ist die gemeldete Speichernutzung der serialisierte Speicher, der nicht genau mit dem im RAM belegten Speicher identisch ist.
  • Es hat keine eingebaute Unterstützung für die Gruppierung, daher kann es die größten Namespaces nicht finden.

4) Redis-Audit

Redis-Audit ist ein probabilistisches Tool, das nützlich ist, um einen schnellen Überblick über Ihre Speichernutzung zu erhalten. Es gibt nützliche Informationen zu Schlüsselgruppen aus, wie Gesamtspeicherverbrauch, maximale TTL in der Gruppe, durchschnittliche letzte Zugriffszeit, Prozentsatz der Schlüssel in der Gruppe, die ablaufen usw. Dies ist das perfekte Tool, wenn Sie den meisten Speicher finden müssen. Schlüsselgruppe in Ihrer Anwendung in Beschlag nehmen.

Redis-Audit-Installation und -Nutzung:

Sie müssen Ruby und Bundle bereits installiert haben. Nach der Installation können Sie das Redis-Audit-Repository entweder in einen Ordner klonen oder die ZIP-Datei herunterladen und in einen Ordner entpacken. Führen Sie in diesem Ordner `bundle install` aus, um die Installation abzuschließen.

Die Verwendung ist ziemlich einfach:Führen Sie von der Befehlszeile aus ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`

aus

Profis von Redis-Audit:

  • Ermöglicht es Ihnen, Ihren eigenen regulären Ausdruck für die Schlüsselraum-/Präfix-Gruppierung zu definieren.
  • Funktioniert auf allen Redis-Versionen.
  • Wenn die Stichprobengröße größer als die tatsächliche Anzahl von Schlüsseln ist, werden alle Schlüssel durchlaufen. Auf der anderen Seite verwendet diese Operation Tasten * anstelle von Scan – wodurch möglicherweise andere Operationen blockiert werden.

Redis-Audit-Nachteile:

  • Verwendet den Befehl DEBUG OBJECT (in ElastiCache nicht verfügbar); Als Ergebnis wird die serialisierte Größe gemeldet – die sich von der tatsächlichen Größe unterscheidet, die im RAM belegt ist.
  • Die Ausgabe ist nicht sehr einfach schnell zu parsen, da sie nicht tabellarisiert ist.

5) Redis-Toolkit

Redis Toolkit ist eine Bare-Bones-Überwachungslösung, die verwendet werden kann, um zwei Schlüsselmetriken zu analysieren:Trefferrate und Speicherverbrauch. Das Projekt wird regelmäßig aktualisiert, um Fehler zu beheben, aber einige der bekannteren Tools werden nicht von der Community unterstützt.

Installation und Verwendung des Redis-Toolkits:

Sie müssen Docker auf Ihrem System installiert haben. Klonen Sie dann das GitHub-Repository (oder laden Sie es als ZIP-Datei herunter und entpacken Sie es in einen Ordner). Von diesem Ordner aus ist die Installation so einfach wie das Ausführen von `./redis-toolkit install`.

Die Nutzung erfolgt ausschließlich über die Befehlszeile durch eine Reihe einfacher Befehle.

  • So starten Sie die Überwachung der Trefferquote:./redis-toolkit monitor
  • Um die Trefferquote zu melden:./redis-toolkit report -name NAME -type hitrate
  • Um die Überwachung der Trefferquote zu stoppen:./redis-toolkit stop
  • So erstellen Sie die Dump-Datei auf dem lokalen System:./redis-toolkit dump
  • So melden Sie die Speichernutzung:./redis-toolkit report -type memory -name NAME

Vorteile des Redis-Toolkits:

  • Einfach verständliche Benutzeroberfläche, die Ihnen genau die Informationen liefert, die Sie benötigen.
  • Kann Präfixe auf jeder Ebene gruppieren, die für Sie nützlich ist (wenn Sie also a:b:1 und a:c:1 wählen, werden sie als a:* oder separat gezählt) .
  • Funktioniert auf allen Redis-Versionen; erfordert keinen Zugriff auf privilegierte Befehle wie DEBUG OBJECT.
  • Gut dokumentiert.

Redis-Toolkit-Nachteile:

  • Die Gedächtnisanalyse ist nicht live; Da es auf dem serialisierten Dump funktioniert, entspricht die gemeldete Speichernutzung nicht der tatsächlichen RAM-Nutzung.
  • Ein Dump muss auf dem Computer erstellt werden, auf dem Redis Toolkit ausgeführt wird. Wenn Sie eine entfernte Redis-Instanz haben, kann dies eine Weile dauern.
  • Die Überwachung der Trefferquote verwendet den Befehl MONITOR, um alle Befehle zu erfassen, die auf dem Server ausgeführt wurden. Dies kann die Leistung beeinträchtigen und ist ein mögliches Sicherheitsrisiko in der Produktion.
  • Die Trefferquote wird als |GET| berechnet / (|GET| + |SET|). Wenn sich also ein Wert häufig ändert, ist seine Trefferquote niedriger, selbst wenn es nie einen tatsächlichen Cache-Fehler gab.

6) Ernte

Dies ist ein probabilistisches Stichprobentool, das verwendet werden kann, um die 10 größten Namespaces/Präfixe in Bezug auf die Anzahl der Schlüssel zu identifizieren. Es ist eines der neuesten Tools und hat auf GitHub nicht viel Anklang gefunden. Aber wenn Sie ein Redis-Neuling sind, der herausfinden möchte, welche Art von Anwendungsdaten Ihre Instanz verstopfen, gibt es nichts Einfacheres als Harvest.

Harvest-Installation und -Nutzung:

Dies kann als Docker-Image heruntergeladen werden. Sobald das Image fertig ist, können Sie das Tool mit dem Befehl „docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL“ von der CLI ausführen.

Ernte-Vorteile:

  • Funktioniert mit Live-Daten.
  • Verwendet den Befehl „Speichernutzung“, um Größeninformationen zu erhalten; daher:
    • Gibt genaue Größeninformationen (anstelle einer fortlaufenden Größe).
    • Erfordert keinen Zugriff auf den Befehl DEBUG OBJECT.
  • Ihre Namespaces müssen nicht :(Doppelpunkt) abgegrenzt werden. Harvest identifiziert gängige Präfixe, anstatt sich auf die Regex-basierte Namespace-Erkennung zu verlassen.

Ernte-Nachteile:

  • Es ist ein One-Trick-Pony – es ist schwierig, es für andere Anwendungsfälle anzupassen.
  • Das Tool funktioniert nur mit Redis v4.0 und höher.
  • Minimale Dokumentation.

Beschränkungen für kostenlose Tools

Obwohl wir diese Tools für das Debuggen der Speicherprobleme unserer Redis-Instanzen sehr nützlich fanden, sollten Sie sich der Einschränkungen dieser kostenlosen Tools bewusst sein.

Die kostenpflichtigen Tools verfügen fast immer über eine Art Datenvisualisierung, die bei keinem der von uns geprüften Tools standardmäßig verfügbar ist. Das Beste, was Sie erhalten, ist eine CSV-Ausgabe, die Sie mit anderen FOSS-Tools visualisieren können, und viele Tools haben nicht einmal diese Option. Das sorgt für eine steile Lernkurve, insbesondere für unerfahrene Redis-Benutzer. Wenn Sie wahrscheinlich häufig Speicheranalysen durchführen, lohnt es sich möglicherweise, sich kostenpflichtige Tools anzusehen, die eine gute Visualisierung bieten.

Eine weitere Einschränkung ist die Möglichkeit, historische Informationen zu speichern. Im Einklang mit der allgemeinen *nix-Philosophie, kleine Tools zu entwickeln, die nur eine Sache tun, aber es gut machen, wagen sich die Tools selten in den Monitoring-Bereich. Nicht einmal ein Diagramm des Speicherverbrauchs im Zeitverlauf, und viele können nicht einmal Live-Daten analysieren.

Das Endergebnis

Ein einzelnes Tool wird wahrscheinlich nicht für alle Ihre Bedürfnisse ausreichen, aber es sind ziemlich großartige Waffen, die Sie in Ihrem Arsenal haben sollten, gepaart mit den Überwachungsfunktionen bereitgestellt von DBaaS-Lösungen wie dem Hosting von ScaleGrid für Redis™*! Um mehr über die großartigen Tools zu erfahren, die mit unseren vollständig verwalteten Hosting-Services für Redis™ verfügbar sind, besuchen Sie unsere Seite ScaleGrid-Funktionen für Redis™ nach Tarif.