Mon instance redis semble devenir très volumineuse et j'aimerais savoir laquelle des multiples bases de données que j'ai dedans consomme combien de mémoire. La INFO
commande de Redis me montre juste la taille totale et le nombre de clés par base de données, ce qui ne me donne pas beaucoup d'informations ... Donc, tous les outils / idées qui me donnent plus d'informations lors de la surveillance du serveur Redis seraient appréciés.
La documentation Redis ne me montre aucune commande pouvant renvoyer la mémoire consommée de certaines touches, donc je suppose que si un code bogué écrirait beaucoup de "poubelle" à redis, cela pourrait être vraiment difficile à trouver ...
La solution des commentaires mérite sa propre réponse:
la source
a
avec une valeur de 4 Go mais cela n'apparaîtrait pas dans les bigkeys. (cela se passe par gist.github.com/michael-grunder/9257326 et docs.redislabs.com/latest/ri/memory-optimizations/… )MEMORY USAGE key
La commande vous donne le nombre d'octets dont une clé et sa valeur ont besoin pour être stockées dans la RAM.L'utilisation rapportée est le total des allocations de mémoire pour les données et les frais administratifs requis par une clé de sa valeur (documentation redis source)
la source
Jetez un œil à ce projet, il produit des statistiques intéressantes sur les espaces de clés basés sur des expressions régulières et des préfixes. Il utilise la
DEBUG OBJECT
commande et scanne la base de données, identifiant les groupes de clés et estimant le pourcentage d'espace qu'ils occupent.https://github.com/snmaynard/redis-audit
La sortie ressemble à ceci:
Ou celui-ci: https://github.com/sripathikrishnan/redis-rdb-tools qui effectue une analyse complète sur l'ensemble de l'espace de clés en analysant un fichier dump.rdb hors ligne. Celui-ci fonctionne bien aussi. Il peut vous donner la taille moyenne / min / max des entrées de votre base de données, et le fera même en fonction d'un préfixe.
la source
Vous pourriez trouver très utile d'échantillonner les clés Redis et de les regrouper par type. Salvatore a écrit un outil appelé redis-sampler qui émet environ 10000
RANDOMKEY
commandes suivies d'uneTYPE
sur les clés récupérées. En quelques secondes ou minutes, vous devriez obtenir une vue assez précise de la distribution des types de clés.J'ai écrit une extension (malheureusement pas n'importe où open-source car elle est liée au travail), qui ajoute un peu d'introspection des noms de clés via des expressions rationnelles qui vous donnent une idée des types de clés d'application (selon la structure de dénomination que vous using), sont stockés dans Redis. Combiné avec la sortie plus générale de redis-sampler, cela devrait vous donner une très bonne idée de ce qui se passe.
la source
redis-cli --bigkeys
Vous pouvez peut-être faire une introspection sur le fichier db. Le protocole est relativement simple (mais pas bien documenté), vous pouvez donc écrire un analyseur pour déterminer quelles clés individuelles prennent beaucoup de place.
Nouvelles suggestions:
Avez-vous essayé d'utiliser
MONITOR
pour voir ce qui est écrit, en direct? Vous pouvez peut-être trouver le problème avec les données en mouvement.la source
INFO
etMONITOR
, mais le problème principal est peut-être que, lorsque vous ne regardez pas Redis, il est devenu vraiment grand ...Vous pouvez utiliser l'application .net https://github.com/abhiyx/RedisSizeCalculator pour calculer la taille de la clé redis,
N'hésitez pas à donner votre avis pour le même
la source
Je préfère généralement la méthode d'échantillonnage par clé pour résoudre de tels scénarios.
Par exemple:-
la source
Que diriez-vous de redis-cli obtenir KEYNAME | wc -c
la source