Comment puis-je vérifier l’utilisation de la mémoire dans un cluster ElastiCache for Redis que j’ai moi-même créé et mettre en œuvre les bonnes pratiques pour contrôler l’utilisation élevée de la mémoire ?
Je souhaite vérifier l’utilisation de la mémoire dans un cluster Amazon ElastiCache for Redis que j’ai moi-même créé et mettre en œuvre les bonnes pratiques pour contrôler l’utilisation élevée de la mémoire.
Brève description
Voici les causes d’une utilisation élevée de la mémoire dans un cluster ElastiCache for Redis que vous avez vous-même créé :
- Clés récemment ajoutées : des paires clé-valeur supplémentaires entraînent une augmentation de l’utilisation de la mémoire, de même que l’ajout d’éléments supplémentaires à des clés déjà existantes. Pour identifier les modifications de données récentes sur un nœud, consultez l’indicateur SetTypeCmds. Pour en savoir plus, consultez la commande commandstats sur la page INFO du site Web Redis.
- Augmentation de l’utilisation de la mémoire tampon : les clients sont connectés à Redis via le réseau. Si les clients, y compris qui les clients Pub/Sub, ne lisent pas le cache assez rapidement, Redis conserve les données de réponse dans la mémoire tampon de sortie client. Pour en savoir plus, consultez les pages Redis Pub/Sub et Output buffer limits, ainsi que le site Web Redis. S’il existe un goulot d’étranglement dans la bande passante du réseau ou si le cluster est constamment soumis à une charge importante, l’utilisation de la mémoire tampon peut s’accumuler. Cela entraîne un épuisement de la mémoire et une dégradation des performances. Par défaut, ElastiCache for Redis ne limite pas la croissance de la mémoire tampon de sortie, et chaque client possède sa propre mémoire tampon. Pour vérifier l’utilisation de la mémoire tampon, appliquez la commande client list. Pour en savoir plus, consultez la page CLIENT LIST du site Web Redis.
- Nombre élevé de nouvelles connexions : un grand nombre de nouvelles connexions peut augmenter l’utilisation de la mémoire. Toutes les nouvelles connexions créent un descripteur de fichier qui consomme de la mémoire, et cette consommation cumulée de mémoire peut entraîner l’éviction des données ou des erreurs OOM. Pour connaître le nombre de nouvelles connexions, consultez l’indicateur NewConnections.
- Utilisation élevée des échanges : l’utilisation des échanges sur un nœud de cache en cas de mémoire libre est un comportement normal. Cependant, une utilisation excessive des échanges peut entraîner une baisse des performances. Une utilisation élevée des échanges se produit dans un nœud soumis à une forte pression mémoire. Il en résulte qu’une faible quantité de mémoire peut être libérée. Pour surveiller les échanges sur l’hôte, utilisez l’indicateur SwapUsage.
- Fragmentation élevée de la mémoire : une fragmentation élevée de la mémoire témoigne d’un manque d’efficacité dans la gestion de la mémoire du système d’exploitation. Il se peut que Redis ne libère pas de mémoire lorsque les clés sont supprimées. Pour surveiller le taux de fragmentation, utilisez l’indicateur MemoryFragmentationRatio. Si vous rencontrez des problèmes de fragmentation, activez le paramètre activedefrag pour gérer la défragmentation active de la mémoire.
- Grandes clés : les grandes clés présentent une taille de données élevée ou un nombre important d’éléments. Elles peuvent entraîner une utilisation importante de la mémoire. Pour détecter les grandes clés dans votre jeu de données, utilisez la commande redis-cli --bigkeys ou redis-cli --memkeys. Pour en savoir plus, consultez les pages Scanning for big keys et Scanning keys du site Web Redis.
Résolution
Vérifier l’utilisation de la mémoire
Pour vérifier l’une utilisation de la mémoire dans un cluster ElastiCache for Redis que vous avez créé vous-même, consultez les indicateurs Redis suivants :
Remarque : ces indicateurs sont publiés dans Amazon CloudWatch pour chaque nœud d’un cluster.
- BytesUsedForCache : cette valeur correspond au nombre total d’octets alloués par Redis à l’ensemble des tâches. Elle sert à déterminer l’utilisation de la mémoire d’un cluster. Pour récupérer cet indicateur, exécutez la commande INFO sur un nœud Redis. Pour en savoir plus, consultez la page INFO du site Web Redis.
- FreeableMemory : cet indicateur au niveau de l’hôte présente la quantité de mémoire disponible sur l’hôte. Si l’utilisation de la mémoire augmente en raison des données du cache ou d’une surcharge, la valeur FreeableMemory diminue. Une diminution de la valeur FreeableMemory indique une faible quantité de mémoire sur l’hôte. L’échange peut avoir lieu lorsque FreeableMemory est trop faible.
- DataBaseMemoryUsagePercentage : cette valeur correspond au pourcentage de mémoire utilisé par un nœud de cluster. Lorsque cet indicateur atteint 100 % de son seuil, Redis lance la politique d’éviction Redis maxmemory. Pour en savoir plus, consultez la page Key eviction du site Web Redis. Pour récupérer cet indicateur, exécutez la commande INFO sur un nœud Redis. Pour en savoir plus, consultez la page INFO du site Web Redis.
Remarque : par défaut, ElastiCache réserve 25 % de la valeur maxmemory à des activités sans lien avec les données, comme le basculement et la sauvegarde. Si vous ne prévoyez pas suffisamment de mémoire réservée pour une utilisation hors données, l’échange peut augmenter. Pour en savoir plus, consultez la page Gestion de la mémoire réservée.
Bonnes pratiques pour contrôler l’utilisation élevée de la mémoire
- Spécifiez la durée de vie des clés : pour empêcher le stockage de clés inutiles et supprimer les clés qui arrivent à expiration, spécifiez une durée de vie pour que les clés expirent. Pour en savoir plus, consultez la page TTL du site Web Redis. Si vous avez un nombre élevé d’évictions de clés, cela signifie que le fonctionnement de votre nœud entraîne une pression de mémoire. Pour éviter que les clés expirent au même moment, ajoutez un caractère aléatoire lorsque vous utilisez le paramètre de durée de vie.
- Utilisez une politique d’éviction : lorsque la mémoire cache est pleine, Redis supprime les clés pour libérer de l’espace en fonction de la politique maxmemory-policy. Par défaut, la politique maxmemory-policy est définie sur volatile_lru. Il est recommandé de choisir une politique d’éviction adaptée à votre charge de travail.
- Allouez de la mémoire réservée : pour éviter tout problème lors du basculement ou de la sauvegarde, il est recommandé de définir le paramètre reserved_memory_percentage sur au moins 25 % pour l’utilisation hors données. S’il n’y a pas assez de mémoire réservée pour effectuer un basculement ou une sauvegarde, cela entraîne des problèmes d’échange et de performances.
- Utilisez le regroupement de connexions : le regroupement de connexions vous permet de contrôler les grandes quantités de tentatives de nouvelles connexions du client Redis. Pour en savoir plus, consultez la page Comment puis-je appliquer les bonnes pratiques pour les clients Redis et les clusters ElastiCache for Redis que j’ai moi-même créés ?
- Configurez un délai d’inactivité côté serveur : les connexions ouvertes consomment de la mémoire et leur utilisation augmente au fil du temps, que le client envoie ou non des requêtes à ElastiCache for Redis. Pour minimiser l’utilisation inutile de la mémoire par les connexions inactives, configurez le délai d’expiration côté serveur via le groupe de paramètres afin de fermer les connexions inactives après une période définie. Pour éviter la fermeture anticipée des connexions, définissez une valeur de délai d’inactivité côté serveur supérieure à celle du délai d’attente côté client dans la bibliothèque client.
- Ajustez les limites de taille de la mémoire tampon de sortie : ajustez la limite de la mémoire tampon de sortie pour contrôler l’utilisation de l’espace tampon. Les groupes de paramètres ElastiCache for Redis incluent des paramètres qui commencent par client-output-buffer-limit afin d’éviter une utilisation élevée de la mémoire tampon de sortie client. Aucune limite n’est suggérée pour ces paramètres. Veillez à comparer votre charge de travail et à choisir une valeur appropriée pour vos limites de mémoire tampon de sortie.
- Utilisez le mappage de hachage : le hachage permet de gérer les structures de données comportant un grand nombre de clés. Pour réduire l’empreinte mémoire par rapport aux tables de hachage, vous pouvez également utiliser l’encodage ziplist. Pour en savoir plus, consultez la page Memory optimization du site Web Redis. Remarque : le hachage est une commande complexe susceptible de provoquer un pic d’utilisation du moteur Redis.
- Mettez le cluster à l’échelle : si la pression de la mémoire augmente dans le cadre d’une charge de travail attendue, réduisez-la en mettez le cluster à l’échelle.
- Réglez une alarme pour l’utilisation de la mémoire : pour déclencher une alarme lorsque l’utilisation de la mémoire atteint un seuil prédéfini, utilisez les alarmes CloudWatch. Lorsque vous créez une alarme CloudWatch, utilisez l’indicateur BytesUsedForCache ou DatabaseMemoryUsagePercentage.

Contenus pertinents
- Réponse acceptéedemandé il y a 5 moislg...
- demandé il y a un anlg...
- demandé il y a 5 moislg...
- demandé il y a 12 jourslg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 10 mois
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a un an