Lorsqu'il s'agit d'analyser l'utilisation de la mémoire d'une instance Redis, il existe de nombreux outils gratuits et open source sur le marché, ainsi qu'une poignée de produits payants. Certains des plus populaires sont les Jacks (de tous les métiers), mais si vous recherchez une analyse plus approfondie de vos problèmes de mémoire, vous feriez peut-être mieux d'utiliser l'un des outils les plus ciblés et les moins connus.
Dans cet article, nous avons compilé une liste des 6 meilleurs outils gratuits que nous avons trouvés les plus utiles pour analyser l'utilisation de la mémoire de nos instances Redis :
- Analyseur de mémoire Redis (RMA)
- Échantillonneur Redis
- Outils RDB
- Redis-Audit
- Boîte à outils Redis
- Récolter
1) Analyseur de mémoire Redis
Redis Memory Analyzer (RMA) est l'un des analyseurs de mémoire FOSS les plus complets disponibles pour Redis. Il prend en charge trois niveaux de détails différents :
- Global – Aperçu des informations d'utilisation de la mémoire.
- Scanner - Informations d'utilisation de la mémoire au niveau de l'espace de clés / du préfixe de niveau le plus élevé - en d'autres termes, le préfixe commun le plus court est utilisé.
- RAM – Espace de clés/préfixe de niveau le plus bas – en d'autres termes, le préfixe commun le plus long est utilisé.
Chaque mode a ses propres utilisations - vous pouvez obtenir plus de détails dans le RMA ReadMe.
RMA – Mode global
En mode global, RMA fournit des statistiques de haut niveau, telles que le nombre de clés, la mémoire système, la taille de l'ensemble résident, la taille de l'espace de clés, etc. Une caractéristique unique est le " surcharge de l'espace de clés "qui est la mémoire utilisée par le système Redis pour stocker les informations liées à l'espace de clés, comme les pointeurs pour les structures de données de la liste.
RMA – Mode scanner
En mode scanner, nous obtenons un aperçu de notre espace de clés. Il donne les espaces de noms de haut niveau (ainsi a:b:1 et a:c:1 sont regroupés en a:*), ainsi que les types de ses éléments et le pourcentage de mémoire consommé par cet espace de noms. Il est utile de commencer par ces informations, puis d'utiliser le comportement "RAM" associé au modèle d'espace de noms pour effectuer une analyse détaillée.
RMA – Mode RAM
En mode RAM, nous obtenons une consommation de mémoire au niveau de l'espace de clés, comme celle fournie par la plupart des autres analyseurs de mémoire FOSS. Donc ici, a:b:1 et a:c:1 sont pris séparément comme a:b:* et a:c:* et nous obtenons des informations détaillées sur la mémoire utilisée, la taille réelle des données, la surcharge, l'encodage, le TTL min et max , etc. Cela permet d'identifier les plus gros consommateurs de mémoire de notre système.
Malheureusement, cet outil n'est pas toujours mis à jour (le dernier commit sur GitHub remonte à plus d'un an). Même ainsi, c'est l'un des meilleurs que nous ayons trouvé pour une analyse détaillée.
Installation et utilisation de RMA :
RMA nécessite que Python et PIP soient installés sur le système (les deux sont disponibles pour tous les principaux systèmes d'exploitation). Une fois qu'ils sont installés, vous pouvez exécuter une seule commande pour installer les outils RDB - ` pip install rma`
C'est assez simple à utiliser depuis la ligne de commande. La syntaxe est `rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-keys-to-scan] [-b COMPORTEMENT] [-t liste-de-types-de-données-à-analyser-séparés-par-des-virgules]`
Avantages RMA :
- Fonctionne en temps réel.
- Utilise la commande scan pour parcourir la base de données, par conséquent, l'impact sur les performances est limité et l'analyse est très précise.
- Bien documenté :il est facile de trouver des exemples d'utilisation.
- Prend en charge des options de personnalisation et de filtrage robustes, y compris l'analyse de types de données spécifiques uniquement ou la prise en compte uniquement des clés correspondant à un modèle spécifique).
- Peut fournir des détails à différents niveaux :espaces de noms, clés ou valeurs globales.
- Unique parmi tous les outils que nous avons audités en ce qu'il montre la surcharge de la structure de données (c'est-à-dire la quantité de mémoire utilisée pour stocker les informations internes Redis comme les pointeurs pour un type de données de liste ).
Inconvénients RMA :
- Ne prend pas en charge l'échantillonnage probabiliste. L'analyse linéaire de la base de données peut être très lente pour les grandes bases de données; il est possible d'arrêter l'analyse une fois qu'un certain nombre de clés sont retournées pour améliorer les performances.
- Il y a beaucoup de détails dans la sortie ; bien qu'utile pour les experts, cela peut ne servir qu'à semer la confusion chez les novices.
2) Échantillonneur Redis
Redis Sampler est un outil très puissant qui peut donner des informations détaillées sur l'utilisation de la mémoire d'une instance Redis. Il est maintenu par antirez, le développeur derrière Redis, et cette connaissance approfondie de Redis transparaît dans cet outil. L'outil n'est pas mis à jour très fréquemment - mais il n'y a pas beaucoup de problèmes signalés de toute façon.
Redis Sampler effectue une analyse probabiliste de la base de données et rapporte les informations suivantes :
- Répartition en pourcentage des clés entre les différents types de données, en fonction du nombre de clés plutôt que de la taille des objets.
- Les plus grandes clés de type chaîne, basées sur strlen, et le pourcentage de mémoire qu'elles consomment.
- Pour tous les autres types de données, les plus grandes clés sont calculées et affichées sous la forme de deux listes distinctes :une basée sur la taille de l'objet et une autre basée sur le nombre d'éléments dans le objet.
- Pour chaque type de données, il affiche également une "distribution de puissance de 2". Ceci est très utile pour comprendre la distribution de taille au sein d'un type de données. La sortie détaille essentiellement le pourcentage de clés d'un type donné dont la taille se situe dans la plage> 2^x et <=2^x+1.
Installation et utilisation de l'échantillonneur Redis :
Il s'agit d'un seul script Ruby. Il nécessite que Ruby soit déjà installé. Vous avez également besoin que les gemmes `rubygems` et `redis` soient installées. L'utilisation est assez simple - depuis la ligne de commande, exécutez `./redis-sampler.rb `
Avantages de l'échantillonneur Redis :
- Très simple à utiliser :aucune option à étudier et à comprendre.
- La sortie est facile à comprendre, même pour les novices, mais contient suffisamment d'informations pour des analyses très détaillées d'une instance Redis par des experts. Les sections sont clairement délimitées et faciles à filtrer.
- Fonctionne sur toutes les versions de Redis.
- N'utilise aucune commande privilégiée comme DEBUG OBJECT, il peut donc être utilisé sur n'importe quel système, y compris ElastiCache d'Amazon.
- Il utilise des commandes de longueur spécifiques au type de données pour identifier la taille des données, de sorte que l'utilisation signalée n'est pas affectée par la sérialisation.
- Fonctionne sur des données en direct. Bien que la recommandation soit d'exécuter sur l'interface de bouclage, elle prend en charge l'échantillonnage de systèmes distants.
Inconvénients de l'échantillonneur Redis :
- Si la taille de l'échantillon est supérieure à la cardinalité de la base de données, elle utilisera toujours RANDOMKEYS plutôt que SCAN.
- Aucun bundle ou image Docker disponible. Vous devez installer manuellement les dépendances (bien que du bon côté, il n'y ait que 2 dépendances).
- Rapporte la taille des données, qui ne correspond pas exactement à l'espace occupé sur la RAM en raison des surcharges de stockage de la structure de données.
- Ne fonctionne pas prêt à l'emploi si votre instance Redis nécessite une authentification. Vous devez modifier le script pour prendre un mot de passe; sous sa forme la plus simple, vous pouvez rechercher :
redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
et changez-le en :
redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :password => "ajoutez-votre-mot-de-passe-ici")
3) Outils RDB
RDB Tools est une suite d'outils très utile pour tout administrateur Redis sérieux. Il existe un outil pour presque tous les cas d'utilisation auxquels nous pourrions penser, mais dans cet article, nous nous concentrerons uniquement sur l'outil d'analyse de la mémoire.
Bien qu'il soit loin d'être aussi complet que RMA ou Redis Sampler, RDB Tools donne 3 informations importantes :
1) Toutes les clés dont la valeur a une taille (sérialisée) supérieure à B octets [B spécifié par utilisateur].
2) Les N clés les plus grandes [N spécifié par l'utilisateur].
3) Taille d'une clé particulière :elle est lue en direct à partir de la base de données.
Cette suite compte de nombreux contributeurs actifs sur GitHub et est assez fréquemment mise à jour. RDB Tools est également bien documenté sur Internet. Le mainteneur sripathikrishnan est bien connu dans la communauté Redis pour les nombreux outils qu'il a fournis au fil des ans.
Installation et utilisation des outils RDB :
Les outils RDB nécessitent l'installation de Python et PIP sur le système (les deux sont disponibles pour tous les principaux systèmes d'exploitation). Une fois qu'ils sont installés, vous pouvez exécuter une seule commande pour installer les outils RDB - ` pip install rdbtools python-lz`
L'utilisation est assez simple :
- Pour obtenir les 200 plus grandes clés :rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
- Pour obtenir toutes les clés supérieures à 128 octets :rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
- Pour obtenir la taille d'une clé :redis-memory-for-key -s localhost -p 6379 -a mypassword person:1
Avantages des outils RDB :
- Génère un fichier CSV, qui peut être utilisé avec d'autres outils FOSS pour créer facilement des visualisations de données, et peut également être importé dans RDBMS-es pour exécuter des analyses.
- Très bien documenté.
- Prend en charge les options de personnalisation et de filtrage, afin que vous puissiez obtenir des rapports plus utiles.
Inconvénients des outils RDB :
- Leur analyse ne fonctionne pas sur des données en direct ; vous devez effectuer un vidage RDB. Par conséquent, l'utilisation de la mémoire signalée est la mémoire sérialisée, qui n'est pas exactement la même que la mémoire occupée sur la RAM.
- Il n'a pas de support intégré pour le regroupement, il ne peut donc pas trouver les espaces de noms les plus grands.
4) Audit Redis
Redis-Audit est un outil probabiliste utile pour obtenir un aperçu rapide de votre utilisation de la mémoire. Il produit des informations utiles sur les groupes de clés, comme la consommation globale de mémoire, le TTL maximum dans le groupe, le temps moyen du dernier accès, le pourcentage de clés du groupe qui expirent, etc. C'est l'outil parfait si vous avez besoin de trouver le plus de mémoire. monopolisant le groupe de clés dans votre application.
Installation et utilisation de Redis-Audit :
Vous devez avoir Ruby et Bundle déjà installés. Une fois installé, vous pouvez soit cloner le référentiel Redis-Audit dans un dossier, soit télécharger le zip et le décompresser dans un dossier. À partir de ce dossier, exécutez "bundle install" pour terminer l'installation.
L'utilisation est assez simple :à partir de la ligne de commande, exécutez ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`
Pros de Redis-Audit :
- Vous permet de définir votre propre expression régulière pour le groupement d'espaces de clés/préfixes.
- Fonctionne sur toutes les versions de Redis.
- Si la taille de l'échantillon est supérieure au nombre réel de clés, il parcourt toutes les clés. D'un autre côté, cette opération utilise les touches * plutôt que la numérisation, ce qui peut bloquer d'autres opérations.
Inconvénients de Redis-Audit :
- Utilise la commande DEBUG OBJECT (non disponible dans ElastiCache) ; par conséquent, il signale la taille sérialisée - qui diffère de la taille réelle occupée sur la RAM.
- La sortie n'est pas très facile à analyser rapidement, car elle n'est pas tabularisée.
5) Boîte à outils Redis
Redis Toolkit est une solution de surveillance simple qui peut être utilisée pour analyser deux mesures clés :le taux de réussite et la consommation de mémoire. Le projet est périodiquement mis à jour pour les corrections de bogues, mais la communauté ne prend pas en charge certains des outils les plus célèbres.
Installation et utilisation de la boîte à outils Redis :
Vous devez avoir Docker installé sur votre système. Ensuite, clonez le dépôt GitHub (ou téléchargez-le au format zip et décompressez-le dans un dossier). À partir de ce dossier, l'installation est aussi simple que d'exécuter `./redis-toolkit install`.
L'utilisation se fait uniquement via la ligne de commande, via une série de commandes simples.
- Pour commencer à surveiller le taux de réussite :./redis-toolkit monitor
- Pour signaler le taux de réussite :./redis-toolkit report -name NAME -type hitrate
- Pour arrêter la surveillance du taux de réussite :./redis-toolkit stop
- Pour créer le fichier de vidage sur le système local :./redis-toolkit dump
- Pour signaler l'utilisation de la mémoire :./redis-toolkit report -type memory -name NAME
Avantages de la boîte à outils Redis :
- Interface facile à comprendre qui vous donne les informations exactes dont vous avez besoin.
- Peut regrouper les préfixes à n'importe quel niveau qui vous est utile (donc si vous choisissez a:b:1 et a:c:1, ils sont comptés comme a:* ou séparément) .
- Fonctionne sur toutes les versions de Redis ; ne nécessite pas d'accès aux commandes privilégiées telles que DEBUG OBJECT.
- Bien documenté.
Inconvénients de la boîte à outils Redis :
- L'analyse de la mémoire n'est pas en direct ; puisqu'il fonctionne sur le vidage sérialisé, l'utilisation de la mémoire signalée ne sera pas égale à la consommation réelle de la RAM.
- Un vidage doit être créé sur l'ordinateur sur lequel Redis Toolkit est en cours d'exécution. Si vous avez une instance Redis distante, cela peut prendre un certain temps.
- La surveillance du taux de succès utilise la commande MONITOR pour capturer toutes les commandes exécutées sur le serveur. Cela peut dégrader les performances et constituer un risque potentiel pour la sécurité en production.
- Le taux de succès est calculé comme |GET| / (|OBTENIR| + |SET|). Ainsi, si une valeur change souvent, son taux de réussite sera plus faible, même s'il n'y a jamais eu d'échec de cache réel.
6) Récolte
Il s'agit d'un outil d'échantillonnage probabiliste, qui peut être utilisé pour identifier les 10 espaces de noms/préfixes les plus grands, en termes de nombre de clés. C'est l'un des outils les plus récents et n'a pas connu beaucoup de succès sur GitHub. Mais si vous êtes un novice de Redis et que vous cherchez à identifier le type de données d'application qui obstrue votre instance, vous ne pouvez rien trouver de plus simple que Harvest.
Installation et utilisation de la récolte :
Ceci est téléchargeable en tant qu'image Docker. Une fois l'image prête, vous pouvez exécuter l'outil à l'aide de la commande "docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL" à partir de la CLI.
Avantages de la récolte :
- Fonctionne sur les données en direct.
- Utilise la commande « utilisation de la mémoire » pour obtenir des informations sur la taille ; d'où :
- Fournit des informations précises sur la taille (plutôt que la taille sérialisée).
- Ne nécessite pas l'accès à la commande DEBUG OBJECT.
- Vos espaces de noms n'ont pas besoin d'être :(deux-points) délimités. Harvest identifie les préfixes courants, plutôt que de dépendre de la reconnaissance d'espace de noms basée sur les expressions régulières.
Inconvénients de la récolte :
- C'est un poney à un tour - difficile de l'adapter à un autre cas d'utilisation.
- L'outil fonctionne uniquement avec Redis v4.0 et supérieur.
- Documentation minimale.
Limitations des outils gratuits
Bien que nous ayons trouvé ces outils très utiles pour déboguer les problèmes de mémoire de nos instances Redis, vous devez être conscient des limites de ces outils gratuits.
Les outils payants ont presque toujours une sorte de visualisation des données, qui n'est pas disponible prête à l'emploi avec aucun des outils que nous avons audités. Le mieux que vous obtiendrez est une sortie CSV que vous pouvez utiliser d'autres outils FOSS pour visualiser, et de nombreux outils n'ont même pas cette option. Cela représente une courbe d'apprentissage abrupte, en particulier pour les utilisateurs novices de Redis. Si vous êtes susceptible d'effectuer souvent des analyses de mémoire, il peut être intéressant de rechercher des outils payants qui offrent une bonne visualisation.
Une autre limitation est la possibilité de stocker des informations historiques. Conformément à la philosophie générale *nix de créer de petits outils qui ne font qu'une chose, mais le font bien, les outils s'aventurent rarement dans l'espace de surveillance. Pas même un graphique de consommation de mémoire au fil du temps, et beaucoup ne peuvent même pas analyser les données en direct.
L'essentiel
Un seul outil ne suffira probablement pas à tous vos besoins, mais ce sont de très bonnes armes à avoir dans votre arsenal, associées aux capacités de surveillance fourni par des solutions DBaaS comme l'hébergement de ScaleGrid pour Redis™* ! Pour en savoir plus sur les excellents outils disponibles avec nos services d'hébergement entièrement gérés pour Redis™, consultez notre page Fonctionnalités ScaleGrid pour Redis™ par forfait.