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

Amazon MQ para RabbitMQ: alarma de memoria alta

Amazon MQ para RabbitMQ generará una alarma de memoria elevada cuando el uso de memoria del agente, identificado por la métrica RabbitMQMemUsed de CloudWatch, supere el límite de memoria, identificado por RabbitMQMemLimit.

Un agente de RabbitMQ que haya generado una alarma de memoria elevada bloqueará todos los clientes que estén publicando mensajes. Es posible que el agente entre en un bucle de reinicio, experimente una pausa en la sincronización de colas o encuentre otros problemas que compliquen el diagnóstico y la resolución de la alarma.

Para diagnosticar y resolver una alarma de memoria insuficiente, primero siga todas las prácticas recomendadas para RabbitMQ y, a continuación, complete los siguientes pasos.

importante
  • Amazon MQ establece RabbitMQMemLimit y se ajusta específicamente teniendo en cuenta la memoria disponible para cada tipo de instancia de host.

  • Amazon MQ no reiniciará un agente que experimente una alarma de memoria elevada, y devolverá una excepción para operaciones de la API RebootBroker mientras el agente continúe generando la alarma.

Paso 1: Diagnostique una alarma de memoria elevada

Existen dos formas de diagnosticar las alarmas de memoria elevada en su agente Amazon MQ para RabbitMQ. Le recomendamos que consulte las métricas de la consola web de RabbitMQ y de Amazon MQ en CloudWatch.

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 Consola de administración de AWS y abra la consola web de RabbitMQ del agente.

  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 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 del agente accediendo a la consola de CloudWatch, o mediante la API de CloudWatch. Las siguientes métricas son útiles para diagnosticar la alarma de memoria elevada de RabbitMQ.

Métrica de CloudWatch de Amazon MQ 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.

Paso 2: Abordar y prevenir una alarma de memoria elevada

nota

El estado de RABBITMQ_MEMORY_ALARM puede tardar varias horas en borrarse después de realizar las acciones necesarias.

Siga todas las prácticas recomendadas de RabbitMQ como método general de prevención. Para cada colaborador específico que se identifique, recomendamos el siguiente conjunto de acciones con objeto de solucionar y prevenir las alarmas de memoria elevada de RabbitMQ.

Razón del uso de memoria elevada Recomendación de Amazon MQ para el direccionamiento Recomendación de Amazon MQ para la prevención
Número de mensajes Consumir los mensajes publicados en las colas, purgar los mensajes de las colas o eliminar las colas de su agente. Habilite lazy queues y establezca o reduzca el límite de profundidad de las colas.
Número de colas Reduzca el número de colas. Establezca o reduzca el límite de recuento de colas.
Número de conexiones Reduzca el número de conexiones. Establezca o reduzca el límite de recuento de conexiones.
Número de canales Reduzca el número de canales. Establezca un número máximo de canales por conexión en las aplicaciones cliente.
Número de consumidores Reduzca el número de consumidores conectados al agente. Establezca un límite de captura previa de consumidores que sea pequeño.
Frecuencia de publicación de mensajes Reduzca la velocidad a la que los publicadores envían mensajes al agente. Active las confirmaciones del publicador.
Tasa de intentos de conexión del cliente Reduzca la frecuencia con la que los clientes intentan conectarse al agente para publicar o consumir mensajes, o configurar el agente. 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 del agente, consulte UpdateBrokerInput en la Referencia de la API de REST de Amazon MQ.

nota

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