Amazon MQ para RabbitMQ: alarma de memoria alta - Amazon MQ

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon MQ para RabbitMQ: alarma de memoria alta

RabbitMQ emitirá una alarma de memoria alta cuando el uso de memoria del bróker, identificado mediante una CloudWatch métricaRabbitMQMemUsed, supere el límite de memoria, identificado por. RabbitMQMemLimit RabbitMQMemLimitlo establece Amazon MQ y se ha ajustado específicamente teniendo en cuenta la memoria disponible para cada tipo de instancia de host. También puede habilitar CloudWatch los registros para identificar una alarma de memoria agotada mediante el mensajeMemory resource limit alarm set on host node rabbit@hostname.

Un agente de Amazon MQ para RabbitMQ que haya generado una alarma de memoria elevada bloqueará todos los clientes que estén publicando mensajes. Debido al elevado uso de memoria, es posible que el agente experimente otros problemas que complique el diagnóstico y la resolución de la alarma.

Los agentes de instancia única que no puedan completar el inicio debido al elevado uso de memoria pueden entrar en un bucle de reinicio, durante el cual las interacciones con el agente son limitadas. En las implementaciones de clúster, las colas pueden experimentar pausas en la sincronización de mensajes entre réplicas de distintos nodos. Las pausas en las sincronizaciones de las colas impiden el consumo de mensajes de las colas, y deben tratarse por separado cuando se resuelve la alarma de memoria.

Amazon MQ no reiniciará a un corredor que sufra una alarma de memoria alta y devolverá una excepción para RebootBrokerAPIlas operaciones mientras el corredor siga dando la alarma.

Utilice la información de esta sección como ayuda para diagnosticar y resolver las alarmas de memoria elevada de RabbitMQ que genere el agente.

nota

Tras realizar las acciones necesarias, el ALARM estado RABBITMQ MEMORY _ _ puede tardar varias horas en desaparecer.

nota

No puede cambiar a un agente de un tipo de instancia mq.m5. a un tipo de instancia mq.t3.micro. Si desea cambiar a una versión anterior, debe eliminar su agente y crear uno nuevo.

Diagnosticar una alarma de memoria elevada mediante la consola web de RabbitMQ

La consola web de RabbitMQ puede generar y mostrar información detallada sobre el uso de memoria de cada nodo. Puede encontrar esta información haciendo lo siguiente:

  1. Inicie sesión en la consola AWS Management Console web RabbitMQ de su bróker y ábrala.

  2. En la consola de RabbitMQ, en la página Overview (Información general), elija el nombre de un nodo de la lista Nodes (Nodos).

  3. En la página de detalles del nodo, elija Memory details (Detalles de memoria) para ampliar la sección y ver la información de uso de memoria del nodo.

La información de uso de memoria que proporciona RabbitMQ en la consola web puede ayudar a determinar qué recursos pueden estar consumiendo demasiada memoria y contribuyendo a provocar la alarma de memoria elevada. Para obtener más información sobre los detalles de uso de memoria disponibles a través de la consola web de RabbitMQ, consulte Razonamiento sobre el uso de memoria en el sitio web de la documentación de RabbitMQ Server.

Diagnosticar una alarma de memoria elevada mediante métricas de Amazon MQ

Amazon MQ habilita las métricas para el agente de forma predeterminada. Puede ver las métricas de su corredor accediendo a la CloudWatch consola o utilizando la. CloudWatch API Las siguientes métricas son útiles para diagnosticar la alarma de memoria elevada de RabbitMQ.

Métrica Amazon MQ CloudWatch Razón del uso elevado de memoria
MessageCount Los mensajes se almacenan en la memoria hasta que se consumen o descartan. Un recuento elevado de mensajes puede indicar una sobreutilización de los recursos, y puede provocar una alarma de memoria elevada.
QueueCount Las colas se almacenan en la memoria, y un gran número de colas puede provocar una alarma de memoria elevada.
ConnectionCount Las conexiones de cliente utilizan memoria, y demasiadas conexiones simultáneas pueden provocar una alarma de memoria elevada.
ChannelCount De forma similar a las conexiones, los canales establecidos con cada conexión también se almacenan en la memoria del nodo, y un número elevado de canales puede provocar una alarma de memoria elevada.
ConsumerCount Para cada consumidor conectado al agente, se cargan un número determinado de mensajes desde el almacenamiento en la memoria antes de entregarlos al consumidor. Un número elevado de conexiones de consumidores puede suponer un uso elevado de memoria y provocar una alarma de memoria elevada.
PublishRate La publicación de mensajes utiliza la memoria del agente. Si la velocidad a la que se publican los mensajes con destino al agente es demasiado alta y supera significativamente la velocidad con la que el agente envía mensajes a los consumidores, es posible que el agente genere una alarma de memoria elevada.

Solucionar una alarma de memoria elevada

Para cada colaborador que se identifique, recomendamos el siguiente conjunto de acciones con objeto de mitigar y resolver la alarma de memoria elevada del agente.

Razón del uso elevado de memoria Recomendación de Amazon MQ
El número de mensajes de las colas es demasiado alto. Realice uno de los siguientes procedimientos:
  • Consuma mensajes publicados en las colas.

  • Purgue mensajes de las colas.

  • Elimine las colas del agente.

El número de colas configuradas en el agente es demasiado alto. Reduzca el número de colas.
El número de conexiones establecidas en el agente es demasiado alto. Reduzca el número de conexiones. Para obtener más información, consulte Reducir el número de conexiones y canales.
El número de canales establecidos en el agente es demasiado alto. Reduzca el número de canales. Para obtener más información, consulte Reducir el número de conexiones y canales.
El número de consumidores conectados al agente es demasiado alto. Reduzca el número de consumidores conectados al agente.
La velocidad de publicación de mensajes es demasiado alta. Reduzca la velocidad a la que los publicadores envían mensajes al agente.
La velocidad de intento de conexión de los clientes es demasiado alta. Reduzca la frecuencia con la que los clientes intentan conectarse al agente para publicar o consumir mensajes, o configurar el agente.

Reducir el número de conexiones y canales

Las conexiones al agente de Amazon MQ para RabbitMQ las pueden cerrar las aplicaciones cliente, o bien manualmente mediante la consola web de RabbitMQ. Para cerrar una conexión mediante la consola web de RabbitMQ, haga lo siguiente.

  1. Inicie sesión en la consola AWS Management Console web RabbitMQ de su corredor y ábrala.

  2. En la consola de RabbitMQ, elija la pestaña Connections (Conexiones).

  3. En la página Connections (Conexiones), en All connections (Todas las conexiones), elija el nombre de la conexión que desea cerrar en la lista.

  4. En la página de detalles de la conexión, elija Close this connection (Cerrar esta conexión) para ampliar la sección y, a continuación, elija Force Close (Forzar cierre). Opcionalmente, puede reemplazar el texto predeterminado de Reason (Razón) con una descripción propia. Amazon MQ para RabbitMQ devolverá la razón que especifique al cliente cuando cierre la conexión.

  5. Elija OK (Aceptar) en el cuadro de diálogo para confirmar y cerrar la conexión.

Cuando se cierra una conexión, los canales asociados a la conexión cerrada también se cierran.

nota

Es posible que las aplicaciones cliente estén configuradas para restablecer automáticamente las conexiones con el agente después de cerrarlas. En tal caso, cerrar las conexiones desde la consola web del agente no será suficiente para reducir el recuento de conexiones o canales.

En el caso de los corredores sin acceso público, puede bloquear temporalmente las conexiones denegando el tráfico entrante en el puerto de protocolo de mensajes correspondiente, por ejemplo, el puerto de conexiones. 5671 AMQP Se puede bloquear el puerto del grupo de seguridad que se haya proporcionado a Amazon MQ al crear el agente. Para obtener más información sobre la modificación de un grupo de seguridad, consulte Añadir reglas a un grupo de seguridad en la Guía del VPC usuario de Amazon.

Solucionar sincronizaciones de colas en pausa en implementaciones de clúster

Cuando se solucionan alarmas de memoria elevada de RabbitMQ, es posible que se descubra que no se pueden consumir los mensajes de una o varias colas. Es posible que estas colas estén sincronizando mensajes entre nodos, y durante ese proceso las colas respectivas no están disponibles para publicación y consumo. Las sincronizaciones de colas pueden quedar en pausa debido a la alarma de memoria elevada, e incluso contribuir a que se produzca esa alarma de memoria.

Para obtener información sobre la detención y el reintento de sincronizaciones de colas en pausa, consulte Resolver la sincronización de colas en pausa de RabbitMQ.

Solucionar los bucles de reinicio en agentes de instancia única

Un agente de instancia única de Amazon MQ para RabbitMQ que genere una alarma de memoria elevada corre el riesgo de dejar de estar disponible si se reinicia y no tiene suficiente memoria para iniciarse. Esto puede provocar que RabbitMQ entre en un bucle de reinicio, y evitar que se puedan realizar más interacciones con el agente hasta que se resuelva el problema. Si el agente se encuentra en un bucle de reinicio, no se podrán aplicar las acciones recomendadas por Amazon MQ descritas anteriormente en esta sección para resolver la alarma de memoria elevada.

Para recuperar el agente, recomendamos actualizar a un tipo de instancia de mayor tamaño con más memoria. A diferencia de las implementaciones de clúster, se puede actualizar un agente de instancia única mientras experimenta una alarma de memoria elevada, porque no hay sincronizaciones de colas que realizar entre nodos durante un reinicio.

Evitar alarmas de memoria elevada

Para cada factor contribuyente que se identifique, recomendamos el siguiente conjunto de acciones para evitar y reducir la aparición de alarmas de memoria elevada de RabbitMQ.

Razón del uso elevado de memoria Recomendación de Amazon MQ
El número de mensajes de las colas es demasiado alto. Haga lo siguiente:
El número de colas configuradas en el agente es demasiado alto. Establezca o reduzca el límite de recuento de colas.
El número de conexiones establecidas en el agente es demasiado alto. Establezca o reduzca el límite de recuento de conexiones.
El número de canales establecidos en el agente es demasiado alto. Establezca un número máximo de canales por conexión en las aplicaciones cliente.
El número de consumidores conectados al agente es demasiado alto. Establezca un límite de captura previa de consumidores que sea pequeño.
La velocidad de intento de conexión de los clientes es demasiado alta. Utilice conexiones de mayor duración para reducir el número y la frecuencia de los intentos de conexión.

Una vez que se haya resuelto la alarma de memoria del agente, se puede actualizar el tipo de instancia de host a una instancia con recursos adicionales. Para obtener información sobre cómo actualizar el tipo de instancia de su corredor, consulte UpdateBrokerInputla referencia de Amazon MQ REST API.

Para obtener una lista completa de los tipos de instancias de agente, consulte Tipos de instancias de Amazon MQ para RabbitMQ.