Si l'utilisation de la mémoire de votre instance Tair (compatible avec Redis OSS) atteint soudainement près de 100 %, suivez ce guide pour identifier la cause et résoudre le problème.
Causes courantes
Un pic soudain de la mémoire est généralement dû à l'une des quatre causes suivantes. Utilisez l'indicateur clé de chaque ligne pour identifier celle qui s'applique à votre situation.
|
Cause |
Indicateur clé |
|
Le trafic entrant et les QPS d'écriture augmentent en même temps que l'utilisation de la mémoire |
|
|
Le nombre de connexions augmente en même temps que l'utilisation de la mémoire |
|
|
Trafic ponctuel intense provoquant une accumulation dans les tampons |
L'utilisation de la bande passante atteint 100 % ; la mémoire |
|
Client lent provoquant une accumulation dans le tampon de sortie |
|
Volume important de nouvelles données écrites
Une arrivée massive de nouvelles données accroît directement la consommation de mémoire.
Diagnostiquer
Sur la page Performance Monitor, vérifiez le trafic entrant et le nombre de requêtes d'écriture par seconde (QPS). Si ces deux métriques suivent la même tendance que l'utilisation de la mémoire, le pic est dû à un volume important de nouvelles données.
Résoudre
Définissez des valeurs de durée de vie (TTL) appropriées sur les clés pour expirer automatiquement les données qui ne sont plus nécessaires. Vous pouvez également supprimer manuellement les clés inutiles.
Augmentez la capacité de mémoire de l'instance. Pour plus de détails, consultez la rubrique Modifier la configuration d'une instance.
Si votre instance est une instance standard et que l'utilisation de la mémoire reste élevée après l'augmentation de la capacité, effectuez une mise à niveau vers une instance en cluster. Les instances en cluster répartissent les données sur plusieurs shards, ce qui réduit la pression sur la mémoire de chaque shard. Pour plus de détails, consultez la rubrique Modifier la configuration d'une instance.
Augmentation soudaine des nouvelles connexions
Chaque connexion client réserve de la mémoire pour ses tampons d'entrée et de sortie. Une augmentation soudaine du nombre de connexions entraîne une hausse correspondante de l'utilisation totale de la mémoire.
Diagnostiquer
Sur la page Performance Monitor, vérifiez le nombre de connexions. Si le nombre de connexions augmente fortement en même temps que l'utilisation de la mémoire, une augmentation soudaine des connexions en est la cause.
Résoudre
Vérifiez s'il existe des fuites de connexion dans votre application.
Configurez un délai d'expiration des connexions pour fermer automatiquement les connexions inactives. Pour plus de détails, consultez la rubrique Spécifier un délai d'expiration pour les connexions client.
Trafic ponctuel intense provoquant une accumulation dans les tampons
Lorsque des accès ponctuels intenses génèrent un trafic dépassant la bande passante réseau de l'instance, les données entrantes et sortantes s'accumulent dans les tampons d'entrée et de sortie. Cette accumulation consomme de la mémoire supplémentaire, en plus du stockage normal des données.
Diagnostiquer
Vérifiez si l'utilisation du trafic entrant et sortant a atteint 100 %.
-
Exécutez la commande
MEMORY STATSet vérifiez siclients.normaloccupe une quantité excessive de mémoire.Remarqueclients.normalindique la mémoire totale consommée par les tampons d'entrée et de sortie de toutes les connexions client normales. Une valeur élevée confirme que l'accumulation dans les tampons est à l'origine du pic de mémoire.
Résoudre
Identifiez la cause du pic de trafic.
Augmentez la bande passante réseau de l'instance. Pour plus de détails, consultez les rubriques Augmenter manuellement la bande passante d'une instance et Activer la mise à l'échelle automatique de la bande passante.
Mettez à niveau les spécifications de l'instance pour fournir une capacité de tampon suffisante. Pour plus de détails, consultez la rubrique Modifier la configuration d'une instance.
Client lent provoquant une accumulation dans le tampon de sortie
Lorsqu'un client ne peut pas consommer les réponses assez rapidement, les données non livrées s'accumulent dans le tampon de sortie côté serveur. Redis alloue de la mémoire pour chaque réponse en file d'attente, ce qui peut devenir important lorsque les clients prennent du retard.
Diagnostiquer
Dans redis-cli, exécutez la commande MEMORY DOCTOR et vérifiez la valeur de big_client_buf. Si big_client_buf est égal à 1, au moins un client dispose d'un tampon de sortie surdimensionné qui consomme une quantité importante de mémoire.
Résoudre
Exécutez la commande CLIENT LIST et recherchez les clients présentant une valeur omem élevée. Le champ omem indique la mémoire utilisée par le tampon de sortie d'un client. Vérifiez si le client identifié rencontre des problèmes de performance l'empêchant de consommer les réponses suffisamment rapidement.