Comment puis-je résoudre les problèmes d’utilisation élevée de l’UC dans le cluster ElastiCache for Redis que j’ai moi-même créé ?

Lecture de 6 minute(s)
0

Je souhaite résoudre les problèmes d’utilisation élevée de l’UC dans le cluster Amazon ElastiCache for Redis que j’ai moi-même créé.

Brève description

Voici les métriques d’UC Amazon CloudWatch pour ElastiCache for Redis :

  • EngineCPUUtilization : indique l’utilisation du processeur pour le thread du moteur Redis. Redis fonctionne en monothread. Il est recommandé de surveiller la métrique EngineCPUUtilization pour les nœuds dotés de quatre processeurs virtuels ou plus.
  • CPUUtilization : indique le pourcentage d’utilisation du processeur pour l’hôte. Pour les nœuds plus petits dotés de deux processeurs virtuels ou moins, utilisez la métrique CPUUtilization pour surveiller la charge de travail du cluster.

Résolution

Résoudre les problèmes liés à l’utilisation élevée du processeur dans le moteur

Pour résoudre les problèmes liés à l’utilisation élevée du processeur dans le moteur, vérifiez les points suivants :

  • Commandes de longue durée qui consomment beaucoup de temps d’UC : les commandes dont la complexité temporelle est élevée, comme keys, hkeys et hgetall, consomment beaucoup de temps d’UC. Pour vérifier la complexité temporelle et les suggestions de performances d’une commande, consultez la page Commands du site Web Redis. Si vous utilisez des scripts Lua, toutes les activités du serveur sont bloquées pendant l’exécution, et la valeur EngineCPUUtilization augmente. Les scripts Lua sont utilisés par les commandes Redis EVAL et EVALSHA. Pour en savoir plus, consultez les pages Scripting with Lua, EVAL et EVALSHA du site Web Redis. Pour vérifier la présence de commandes ou de scripts Lua de longue durée, utilisez Redis SLOWLOG.
  • Nombre élevé de demandes : consultez les statistiques des commandes pour identifier les rafales de commandes ou une augmentation de la latence. Pour vérifier les statistiques des commandes, utilisez les métriques CloudWatch metrics telles que GetTypeCmds ou HashBasedCmds. Vous pouvez également utiliser la commande Redis INFO. Pour en savoir plus, consultez la page INFO du site Web Redis. Si le nombre de demandes est élevé et que la charge de travail de vos applications est conforme aux attentes, mettez le cluster à l’échelle.
  • Sauvegarde et réplication : si une sauvegarde ou une réplication a eu lieu, vérifiez la métrique SaveInProgress. Cette métrique binaire affiche la valeur 1 lorsqu’une sauvegarde en arrière-plan (avec ou sans embranchement) est en cours et la valeur 0 quand aucune sauvegarde en arrière-plan n’est en cours. Vérifiez qu’il y a suffisamment de mémoire pour créer un instantané Redis.
  • Nombre élevé de nouvelles connexions : un nombre élevé de nouvelles demandes de connexion client sur une courte période peut entraîner une augmentation de la valeur EngineCPUUtilization. Pour connaître les bonnes pratiques à suivre afin de gérer un grand nombre de connexions, consultez la page Best practices: Redis clients and Amazon ElastiCache for Redis. Pour Redis 6.2 et les versions ultérieures, des améliorations de performances ont été mises en œuvre. Pour en savoir plus, consultez la page ElastiCache (Redis OSS) version 6.2 (améliorée).
  • Nombre élevé d’évictions majeures : Redis expulse les clés en fonction du paramètre maxmemory-policy. Les évictions se produisent lorsque le cache n’a pas suffisamment de mémoire pour contenir de nouvelles données. Si le volume d’évictions est élevé, Redis utilise davantage de ressources UC pour expulser les clés, et la valeur EngineCPUUtilization augmente. Pour surveiller le volume d’évictions, utilisez la métrique CloudWatch ](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheMetrics.Redis.html)Evictions[. Si le volume d’évictions est élevé, utilisez un type de nœud plus grand ou ajoutez d’autres nœuds pour mettre votre cluster à l’échelle.
  • Nombre élevé de récupérations : pour libérer de la mémoire, Redis échantillonne et supprime toutes les clés qui ont atteint leur délai d’expiration. On parle alors d’un processus de récupération. En cas de volume élevé d’expirations, les valeurs CPUUtilization et EngineCPUUtilization peuvent augmenter. Pour surveiller le nombre d’événements d’expiration de clés, utilisez la métrique CloudWatch **Reclaimed.**Il est recommandé de s’assurer qu’un trop grand nombre de clés n’expirent pas en même temps. Pour vous assurer que vos clés expirent à des intervalles de temps différents, utilisez la commande EXPIREAT ou définissez des valeurs de durée d’expiration différentes pour vos clés. Pour en savoir plus, consultez la page EXPIREAT du site Web Redis.

Résoudre les problèmes liés à une valeur CPUUtilization élevée

Pour résoudre les problèmes liés à une valeur CPUUtilization élevée, vérifiez les points suivants :

  • Trafic réseau ou connexions élevés : un trafic réseau ou un nombre de connexions élevé peut entraîner une augmentation de la valeur CPUUtilization sur Amazon ElastiCache Redis. Pour savoir si le trafic réseau ou le nombre de connexions est élevé, consultez les métriques CloudWatch NewConnections, NetworkBytesIn, NetworkBytesOut, NetworkPacketsIn et NetworkPacketsOut.
  • E/S asynchrones gérées par d’autres threads : pour les types de nœuds pris en charge, les E/S améliorées sont conçues pour gérer les E/S réseau sur des threads dédiés. De plus, pour Redis 6.2 et les versions ultérieures, le déchargement TLS est pris en charge et permet à ElastiCache for Redis d’effectuer des opérations TLS sur les threads d’E/S. Les opérations TLS utilisent le cœur d’UC supplémentaire disponible dans les nœuds, et cette utilisation supplémentaire du processeur peut entraîner une augmentation de la valeur **CPUUtilization.**Pour en savoir plus, consultez la page Amazon ElastiCache performance boost with Amazon EC2 M5 and R5 instances.
  • Maintenance gérée et mises à jour des services en continu : les mises à jour de maintenance et de service nécessitent de la capacité de calcul et peuvent entraîner une augmentation de la valeur CPUUtilization. Veillez à vérifier la fenêtre de maintenance pour voir si l’augmentation de la valeur CPUUtilization se produit en même temps. Il est recommandé de définir la fenêtre de maintenance sur une période de faible utilisation. Pour en savoir plus, consultez la Page d’aide sur la maintenance gérée et les mises à jour de service d’Amazon ElastiCache.
  • Pagination et opérations élevées : une mémoire insuffisante sur le nœud peut entraîner la suppression de la mémoire à échanger par le nœud. Cette action peut entraîner une dégradation des performances. Si la pagination est excessive, la valeur CPUUtilization peut augmenter. De même, si la charge sur le nœud est élevée lors d’opérations comme la sauvegarde ou la mise à l’échelle, la valeur CPUUtilization peut augmenter également. Pour en savoir plus, consultez la page Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch.
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois