Amazon MQ pour RabbitMQ : alarme de mémoire élevée - Amazon MQ

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Amazon MQ pour RabbitMQ : alarme de mémoire élevée

RabbitMQ déclenchera une alarme de mémoire élevée lorsque l'utilisation de la mémoire par le courtier, identifiée par CloudWatch métriqueRabbitMQMemUsed, dépasse la limite de mémoire, identifiée par. RabbitMQMemLimit RabbitMQMemLimitest défini par Amazon MQ et a été spécifiquement réglé en fonction de la mémoire disponible pour chaque type d'instance hôte. Vous pouvez également activer CloudWatch les journaux pour identifier les alarmes contenant une mémoire trop importante à l'aide du messageMemory resource limit alarm set on host node rabbit@hostname.

Un agent Amazon MQ for RabbitMQ qui a déclenché une alarme de mémoire élevée bloque tous les clients qui publient des messages. En raison de l’utilisation élevée de la mémoire, votre agent peut également rencontrer d’autres problèmes qui compliquent le diagnostic et la résolution de l’alarme.

Les agents à instance unique qui ne peuvent pas terminer le démarrage en raison d’une utilisation élevée de la mémoire peuvent entrer dans une boucle de redémarrage, au cours de laquelle les interactions avec l’agent sont limitées. Dans les déploiements de clusters, les files d’attente peuvent subir une synchronisation interrompue des messages entre des réplicas sur différents nœuds. Les synchronisations de file d’attente suspendues empêchent la consommation de messages provenant des files d’attente et doivent être traitées séparément lors de la résolution de l’alarme de mémoire.

Amazon MQ ne redémarrera pas un courtier présentant une alarme de mémoire insuffisante et renverra une exception pour les RebootBrokerAPIopérations tant que le courtier continue de déclencher l'alarme.

Utilisez les informations de cette section pour faciliter le diagnostic et la résolution des alarmes de mémoire élevée de RabbitMQ déclenchées par votre agent.

Note

Plusieurs heures peuvent être nécessaires pour que le ALARM statut RABBITMQ _ MEMORY _ disparaisse une fois que vous avez effectué les actions requises.

Note

Vous ne pouvez pas rétrograder un agent d'un type d'instance mq.m5. à un type d'instance mq.t3.micro. Si vous souhaitez rétrograder, vous devrez supprimer votre agent et en créer un nouveau.

Diagnostic de l'alarme de mémoire élevée à l'aide de la console Web RabbitMQ

La console Web RabbitMQ peut générer et afficher des informations détaillées sur l’utilisation de la mémoire pour chaque nœud. Vous pouvez trouver ces informations en suivant les procédures ci-dessous :

  1. Connectez-vous à la console AWS Management Console Web RabbitMQ de votre courtier et ouvrez-la.

  2. Sur la console RabbitMQ, sur la Présentation, choisissez le nom d’un nœud dans la liste deNœuds.

  3. Sur la page des informations du nœud, choisissez Informations sur la mémoire pour développer la section afin d'afficher les informations d’utilisation de la mémoire du nœud.

Les informations d’utilisation de la mémoire fournies par RabbitMQ dans la console Web peuvent vous aider à déterminer quelles ressources peuvent consommer trop de mémoire et contribuer à l’alarme de mémoire élevée. Pour d'amples informations sur les informations d'utilisation de la mémoire disponibles via la console Web RabbitMQ, consultez Raisonnement concernant l'utilisation de la mémoire sur le site Web de documentation du serveur RabbitMQ.

Diagnostic de l’alarme à mémoire élevée à l’aide des mesures Amazon MQ

Amazon MQ active les mesures pour votre agent par défaut. Vous pouvez consulter les statistiques de votre courtier en accédant à la CloudWatch console ou en utilisant le CloudWatch API. Les mesures suivantes sont utiles lors du diagnostic de l’alarme à mémoire élevée RabbitMQ.

Métrique Amazon MQ CloudWatch Raison de l’utilisation élevée de la mémoire
MessageCount Les messages sont stockés en mémoire jusqu’à ce qu’ils soient consommés ou rejetés. Un nombre élevé de messages peut indiquer une surutilisation des ressources et peut entraîner une alarme de mémoire élevée.
QueueCount Les files d'attente sont stockées en mémoire et un nombre élevé de files d'attente peut entraîner une alarme de mémoire élevée.
ConnectionCount Les connexions client utilisent de la mémoire, et un trop grand nombre de connexions simultanées peuvent entraîner une alarme de mémoire élevée.
ChannelCount Comme dans le cadre des connexions, les canaux établis à l'aide de chaque connexion sont également stockés dans la mémoire des nœuds, et un nombre élevé de canaux peut entraîner une alarme de mémoire élevée.
ConsumerCount Pour chaque consommateur connecté à l’agent, un certain nombre de messages sont chargés depuis le stockage dans la mémoire avant d’être remis au consommateur. Un grand nombre de connexions grand public peuvent entraîner une utilisation élevée de la mémoire et entraîner une alarme de mémoire élevée.
PublishRate La publication de messages utilise la mémoire de l’agent. Si la fréquence taux de publication des messages sur l’agent est trop élevé et dépasse considérablement le taux auquel l’agent envoie des messages aux consommateurs, l’agent peut déclencher une alarme de mémoire élevée.

Alarme de mémoire élevée

Pour chaque contributeur que vous identifiez, nous avons recommandé l’ensemble d’actions suivant pour atténuer et résoudre l’alarme de mémoire élevée de l’agent.

Raison de l’utilisation élevée de la mémoire Recommandation Amazon MQ
Nombre de messages dans les files d’attente trop élevé. Effectuez l’une des actions suivantes :
  • Consommez les messages publiés dans les files d’attente.

  • Purgez les messages des files d'attente.

  • Supprimez les files d’attente de votre agent.

Le nombre de files d’attente configurées sur l’agent est trop élevé. Réduisez le nombre de files d'attente.
Le nombre de connexions établies sur l’agent est trop élevé. Réduisez le nombre de connexions. Pour de plus amples informations, veuillez consulter Réduction du nombre de connexions et de canaux.
Le nombre de canaux établis sur l’agent est trop élevé. Réduisez le nombre de canaux. Pour de plus amples informations, veuillez consulter, Réduction du nombre de connexions et de canaux.
Le nombre de consommateurs connectés à l’agent est trop élevé. Réduire le nombre de consommateurs connectés à l'agent.
La fréquence de publication de messages est trop élevée. Réduisez la fréquence à laquelle les éditeurs envoient des messages à l'agent.
La fréquence de Tentatives de connexion client est trop élevée. Réduisez la fréquence à laquelle les clients tentent de se connecter à l’agent afin de publier ou de consommer des messages, ou de configurer l’agent.

Réduction du nombre de connexions et de canaux

Les connexions à votre agent Amazon MQ for RabbitMQ peuvent être fermées soit par vos applications clientes, soit en les fermant manuellement à l’aide de la console Web RabbitMQ. Pour fermer une connexion à l’aide de la console Web RabbitMQ, procédez comme suit.

  1. Connectez-vous à la console AWS Management Console Web RabbitMQ de votre courtier et ouvrez-la.

  2. Sur la console RabbitMQ, choisissez l’onglet Connexions.

  3. Dans la page de Connexions, sous Toutes les connexions, choisissez le nom de la connexion à fermer dans la liste.

  4. Sur la page des informations de la connexion, choisissez Fermez cette connexion pour développer la section, choisissez Forcer la fermeture. Le cas échéant, vous pouvez remplacer le texte par défaut de Raison avec votre propre description. Amazon MQ for RabbitMQ retournera la raison que vous spécifiez au client lorsque vous fermez la connexion.

  5. Choisissez OK dans la boîte de dialogue pour confirmer et fermer la connexion.

Lorsque vous fermez une connexion, tous les canaux associés à une connexion fermée seront également fermés.

Note

Vos applications clientes peuvent être configurées pour rétablir automatiquement les connexions avec l’agent après leur fermeture. Dans ce cas, la fermeture des connexions à partir de la console Web Broker ne suffira pas à réduire le nombre de connexions ou de canaux.

Pour les courtiers n'ayant pas d'accès public, vous pouvez bloquer temporairement les connexions en refusant le trafic entrant sur le port de protocole de message approprié, par exemple le port 5671 pour les AMQP connexions. Vous pouvez bloquer le port du groupe de sécurité que vous avez fourni à Amazon MQ lors de la création de l’agent. Pour plus d'informations sur la modification de votre groupe de sécurité, consultez la section Ajouter des règles à un groupe de sécurité dans le guide de VPC l'utilisateur Amazon.

Résolution des synchronisations de files d’attente suspendues dans les déploiements de cluster

Lorsque vous répondez aux alarmes de mémoire élevée de RabbitMQ, vous pouvez constater que les messages sur une ou plusieurs files d’attente ne peuvent pas être consommés. Ces files d'attente peuvent être en cours de synchronisation des messages entre les nœuds, au cours desquels les files d'attente respectives deviennent indisponibles pour publication et consommation. Les synchronisations des files d’attente peuvent être suspendues en raison de l’alarme de mémoire élevée et même contribuer à l’alarme de mémoire.

Pour plus d’informations sur l’arrêt et la nouvelle tentative de synchronisation de la file d’attente en pause, veuillez consulter Résolution de la synchronisation de la file d'attente mise en pause RabbitMQ.

Résolution des boucles de redémarrage dans les agents à instance unique

Un agent à instance unique Amazon MQ for RabbitMQ qui déclenche une alarme de mémoire élevée risque de devenir indisponible s’il redémarre et ne dispose pas de suffisamment de mémoire pour démarrer. Cela peut amener RabbitMQ à entrer dans une boucle de redémarrage et à empêcher toute autre interaction avec l’agent jusqu’à ce que le problème soit résolu. Si votre agent est en boucle de redémarrage, vous ne pourrez pas appliquer les actions recommandées par Amazon MQ précédemment décrites dans cette section pour résoudre l’alarme de mémoire élevée.

Pour récupérer votre agent, nous vous recommandons de passer à un type d’instance plus grand avec plus de mémoire. Contrairement aux déploiements de cluster, vous pouvez mettre à niveau un agent à instance unique alors qu'il subit une alarme de mémoire élevée, car il n'y a pas de synchronisation de file d'attente à effectuer entre les nœuds lors d'un redémarrage.

Prévention des alarmes à mémoire élevée

Pour chaque facteur contributif que vous identifiez, nous recommandons l’ensemble d’actions suivantes pour prévenir et réduire l’apparition d’alarmes à mémoire élevée RabbitMQ.

Raison d’utilisation élevée de la mémoire Recommandation Amazon MQ
Nombre de messages dans les files d’attente trop élevé. Procédez comme suit :
Le nombre de files d’attente configurées sur l’agent est trop élevé. Définissez ou réduisez le nombre limite de files d’attente.
Le nombre de connexions établies sur l’agent est trop élevé. Définissez ou réduisez le nombre limite de connexions.
Le nombre de canaux établis sur l’agent est trop élevé. Définissez un nombre maximal de canaux par connexion sur les applications clientes.
Le nombre de consommateurs connectés à l’agent est trop élevé. Définissez une petite limite de prérécupération pour les consommateurs.
La fréquence de Tentatives de connexion client est trop élevée. Utilisez des connexions à plus longue durée pour réduire le nombre et la fréquence des tentatives de connexion.

Une fois l’alarme de mémoire de votre agent résolue, vous pouvez mettre à niveau votre type d’instance hôte vers une instance dotée de ressources supplémentaires. Pour plus d'informations sur la façon de mettre à jour le type d'instance de votre courtier, consultez UpdateBrokerInputle Amazon MQ Reference REST API.

Pour obtenir une liste complète des types d’instances d’agent, veuillez consulter Types d'instance Amazon MQ for RabbitMQ.