web-dev-qa-db-fra.com

Profilage de l'utilisation de la mémoire redis

Existe-t-il un outil que je peux utiliser pour connaître la quantité de mémoire occupée par Redis? 

36
Henley Chiu

Essayez de regarder INFO commande. Je recommande également de lire this article sur l’utilisation de la mémoire Redis, où vous trouverez plus d’informations sur la quantité de mémoire utilisée par certaines structures de données.

35
yojimbo87

Voir https://github.com/sripathikrishnan/redis-rdb-tools

Rdb Tools indique la mémoire utilisée par chaque paire clé = valeur de la base de données. Il analyse un fichier de redis et construit un fichier csv. Chaque ligne de ce fichier csv est une clé et les colonnes contiennent la mémoire utilisée par cette clé.

Vous pouvez filtrer les résultats sur les clés ou le type de données. Étant donné que l'outil s'exécute sur un fichier de vidage, les performances de votre serveur Redis ne sont pas affectées.

Un point à retenir cependant: l'utilisation de la mémoire rapportée est approximative. Sur la base de mes expériences, j'ai constaté que l'utilisation réelle de la mémoire était environ 15% supérieure à celle rapportée par l'outil.

28

Redis affichera l'utilisation de la mémoire toutes les 5 secondes si la variable loglevel est définie sur verbose ou debug.

Par exemple, voici la sortie de ma base de données presque vide:

[49523] 07 Apr 00:38:58 - DB 0: 2 keys (0 volatile) in 4 slots HT.
[49523] 07 Apr 00:38:58 - 1 clients connected (0 slaves), 924416 bytes in use

Vous pouvez voir qu'il y a 2 clés dans la base de données et 1 client connecté. 924416 octets sont en cours d'utilisation. L'utilisation totale de la mémoire (comme indiqué par le champ used_memory_rss renvoyé par la commande INFO) peut être légèrement supérieure (voir la documentation INFO pour plus de détails).

Les données stockées dans redis nécessitent évidemment de la mémoire, mais ce n'est pas la seule raison contrôlable d'utilisation de la mémoire. Avec plus de bases de données configurées, l'utilisation de la mémoire augmente (sur mon système d'environ 450 octets par base). Chaque connexion utilise également de la mémoire (environ 8 kilo-octets par connexion sur mon système).

6
Zr40

Notez que Redis dispose d’un analyseur de mémoire intégré depuis la version 4. Utilisation:

"MEMORY USAGE <key> [SAMPLES <count>] - Estimate memory usage of key"
  "MEMORY STATS                         - Show memory usage details"
  "MEMORY PURGE                         - Ask the allocator to release memory"
  "MEMORY MALLOC-STATS                  - Show allocator internal stats"
4
ClojureMostly

Voir https://github.com/gamenet/redis-memory-analyzer

RMA est un outil de la console permettant d'analyser l'espace clé Redis en temps réel et d'agréger les statistiques d'utilisation de la mémoire par modèles de clé. Vous pouvez utiliser ces outils sans maintenance sur les serveurs de production. 

Vous pouvez analyser tous les types Redis ou certains types sélectionnés, tels que "chaîne", "hachage", "liste", "set", "zset" et utiliser le modèle de correspondance à votre guise.

RMA essaie également de distinguer les noms de clé par modèles, par exemple, si vous avez des clés telles que "utilisateur: 100" et "utilisateur: 101", le modèle commun "utilisateur: *" apparaîtra dans la sortie afin que vous puissiez analyser la plupart des données en difficulté de mémoire. votre exemple.

1
misterion

Si vous êtes également intéressé par la manière dont cette mémoire est répartie sur vos clés, vous pouvez essayer https://github.com/alexdicianu/redis_toolkit . Cela ne fonctionne que si vos clés suivent ce modèle A: B, A: B: C ou A: B: *, etc. Très utile si vous utilisez Redis comme moteur de mise en cache des objets pour un CMS tel que Wordpress ou Drupal.

Voici un échantillon. 

$ ./redis-toolkit report -type memory -name NAME
+----------------------------------------+----------+-----------+----------+
|                     KEY                | NR  KEYS | SIZE (MB) | SIZE (%) |
+----------------------------------------+----------+-----------+----------+
| posts:*                                |      500 |      0.56 |     2.79 |
| post_meta:*                            |      440 |     18.48 |    92.78 |
| terms:*                                |      192 |      0.12 |     0.63 |
| options:*                              |      109 |      0.52 |     2.59 |
0
Alex Dicianu