Meine Redis-Instanz scheint sehr groß zu werden und ich möchte herausfinden, welche der mehreren Datenbanken, die ich dort habe, wie viel Speicher verbraucht. Der INFO
Befehl von Redis zeigt mir nur die Gesamtgröße und die Anzahl der Schlüssel pro Datenbank an, was mir nicht viel Einblick gibt. Daher sind alle Tools / Ideen, die mir bei der Überwachung des Redis-Servers mehr Informationen geben, willkommen.
Die Redis-Dokumentation zeigt mir keine Befehle, die den verbrauchten Speicher bestimmter Schlüssel zurückgeben können. Wenn also ein fehlerhafter Code viel "Müll" in Redis schreiben würde, könnte dies sehr schwer zu finden sein ...
Die Lösung aus den Kommentaren verdient eine eigene Antwort:
quelle
a
mit einem Wert von 4 GB haben, dies würde jedoch bei großen Schlüsseln nicht angezeigt. (Dies wird von gist.github.com/michael-grunder/9257326 und docs.redislabs.com/latest/ri/memory-optimizations/… durchgeführt. )MEMORY USAGE key
Der Befehl gibt die Anzahl der Bytes an, die ein Schlüssel und sein Wert im RAM speichern müssen.Die gemeldete Nutzung ist die Summe der Speicherzuweisungen für Daten und Verwaltungsaufwand, die ein Schlüssel für seinen Wert benötigt (Quell-Redis-Dokumentation).
quelle
Schauen Sie sich dieses Projekt an, in dem einige interessante Statistiken zu Schlüsselbereichen ausgegeben werden, die auf regulären Ausdrücken und Präfixen basieren. Es verwendet den
DEBUG OBJECT
Befehl und scannt die Datenbank, identifiziert Schlüsselgruppen und schätzt den Prozentsatz des Speicherplatzes, den sie belegen.https://github.com/snmaynard/redis-audit
Die Ausgabe sieht folgendermaßen aus:
Oder dies hier: https://github.com/sripathikrishnan/redis-rdb-tools, das eine vollständige Analyse des gesamten Schlüsselraums durch Offline-Analyse einer dump.rdb-Datei durchführt. Dieser funktioniert auch gut. Es kann Ihnen die durchschnittliche / min / max-Größe für die Einträge in Ihrer Datenbank geben und wird dies sogar basierend auf einem Präfix tun.
quelle
Es kann sehr nützlich sein, Redis-Schlüssel zu testen und nach Typ zu gruppieren. Salvatore hat ein Tool namens Redis-Sampler geschrieben , das ungefähr 10000
RANDOMKEY
Befehle gefolgt von a ausgibtTYPE
bei abgerufenen Schlüsseln. Innerhalb von Sekunden oder Minuten sollten Sie eine ziemlich genaue Ansicht der Verteilung der Schlüsseltypen erhalten.Ich habe eine Erweiterung geschrieben (leider nirgendwo Open Source, da sie arbeitsbezogen ist), die ein wenig Introspektion von Schlüsselnamen über Regexs hinzufügt, die Ihnen eine Vorstellung davon geben, welche Arten von Anwendungsschlüsseln (je nach Ihrer Namensstruktur) using), werden in Redis gespeichert. In Kombination mit der allgemeineren Ausgabe von Redis-Sampler sollte dies Ihnen eine äußerst gute Vorstellung davon geben, was los ist.
quelle
redis-cli --bigkeys
Vielleicht können Sie die Datenbankdatei überprüfen. Das Protokoll ist relativ einfach (aber nicht gut dokumentiert), sodass Sie einen Parser dafür schreiben können, um festzustellen, welche einzelnen Schlüssel viel Platz beanspruchen.
Neue Vorschläge:
Haben Sie versucht
MONITOR
, live zu sehen, was geschrieben wird? Vielleicht können Sie das Problem mit den Daten in Bewegung finden.quelle
INFO
undMONITOR
, aber vielleicht ist das Hauptproblem, dass Redis, wenn man nicht zuschaut, wirklich groß geworden ist ...Sie können die .net-Anwendung https://github.com/abhiyx/RedisSizeCalculator verwenden , um die Größe des Redis-Schlüssels zu berechnen.
Bitte zögern Sie nicht, Ihr Feedback dazu zu geben
quelle
Normalerweise bevorzuge ich die Schlüsselstichprobenmethode, um solche Szenarien zu beheben.
Z.B:-
quelle