Redis
 sql >> Base de données >  >> NoSQL >> Redis

mémoire redis et pics de processeur

Après avoir expérimenté cela et lu des informations sur la persistance redis, je pense que les observations suivantes peuvent être faites :

  • Lorsque vous utilisez RDB (paramètres par défaut), redis bifurque chaque fois qu'un save l'opération est déclenchée, qui (par défaut) est définie sur une fois toutes les 15 minutes au minimum . Lorsque plusieurs écritures sur Redis sont effectuées, les écritures RDB sont aussi fréquentes qu'une fois toutes les 60 secondes .
  • Chaque fork utilisera une allocation de mémoire "copie sur écriture", ce qui signifie que même si la mémoire ne doublera pas réellement - cela apparaîtra sur des outils comme ps , htop et autres.
  • Le fork lui-même peut être une opération gourmande en ressources processeur, en particulier sur les hôtes virtuels basés sur xen (ce que nous utilisons actuellement).
  • L'opération d'écriture semble écraser complètement le fichier RDB existant. Il n'écrit pas seulement les modifications, mais vide plutôt l'intégralité jeu de données sur disque.

Donc, sur un hôte virtuel modeste avec 4 Go de RAM et un ensemble de données d'environ 750 Mo (au moment où j'ai posté la question), cela commence à devenir plutôt "cher". Nous avons observé ces pics de CPU/mémoire, ainsi qu'une augmentation des E/S, même dans des conditions d'utilisation de charge/redis assez modérées.

Donc, pour répondre à ma propre question, cela semble être le comportement "attendu".

En ce qui concerne l'amélioration de la situation, nous avons choisi de changer notre configuration pour utiliser une combinaison de RDB et AOF. AOF (Append Only File), ne semble écrire que des modifications au disque. Vous pouvez (et devriez) toujours configurer le fichier AOF à réécrire (en utilisant auto-aof-rewrite-percentage et auto-aof-rewrite-min-size réglages). Il est également conseillé de continuer à utiliser RDB pour les instantanés. Cependant, dans cette configuration, vous pouvez probablement effectuer des réécritures/instantanés complets moins fréquemment tout en conservant de bonnes performances et une durabilité encore meilleure.