¿Cómo soluciono los errores “Persistent store is Full” (El almacén persistente está lleno) en Amazon MQ para ActiveMQ?

Última actualización: 19/04/2022

No puedo enviar mensajes a mi agente de Amazon MQ para ActiveMQ. Cuando reviso los registros del agente en Amazon CloudWatch, aparece el error “Persistent store is Full” (El almacén persistente está lleno). ¿Qué causa el error y cómo soluciono el problema?

Descripción breve

Amazon MQ para ActiveMQ devuelve un error Persistent store is Full (El almacén persistente está lleno) a CloudWatch si un agente alcanza su límite de almacenamiento. Cuando un agente de Amazon MQ para ActiveMQ alcanza su límite de almacenamiento, el agente no puede seguir recibiendo mensajes.

Para resolver los errores Persistent store is full (El almacén persistente está completo), primero debe confirmar la causa del error revisando las siguientes métricas de CloudWatch para su agente:

  • Store Percentage Usage (Porcentaje de uso del almacén)
  • Journal Files for Full Recovery (Archivos de diario para una recuperación completa)
  • Journal Files for Fast Recovery (Archivos de diario para una recuperación rápida)

Luego, en función de las métricas del agente, reduzca la cantidad de datos que se guardan en el almacenamiento persistente del agente según sea necesario.

Para evitar que se repita el error, consulte la sección Prácticas recomendadas para evitar errores “Persistent store is Full” (El almacén persistente está lleno) de este artículo. Para obtener más información, consulte Almacén de mensajes de AMQ y Control de flujo de productor en la documentación de Apache ActiveMQ.

Ejemplo de mensaje de error “Persistent store is Full” (El almacén persistente está lleno) de CloudWatch para un agente de Amazon MQ para ActiveMQ

INFO | Usage(default:store:queue://broker.name:store) percentUsage=99%, usage=537210471, limit=536870912, percentUsageMinDelta=1%;Parent:Usage(default:store) percentUsage=100%, usage=537210471, limit=536870912,percentUsageMinDelta=1%: Persistent store is Full, 100% of 536870912. Stopping producer (ID:xxxx) to prevent flooding queue://broker.name. See http://activemq.apache.org/producer-flow-control.html for more info (blocking for: 155s)

Resolución

Confirmar la causa del error

1.    Abra la consola de CloudWatch.

Importante: asegúrese de iniciar sesión en la misma región de AWS en la que se encuentra su agente.

2.    En el panel de navegación izquierdo, elija Metrics (Métricas). A continuación, seleccione All metrics (Todas las métricas). Se abrirá la página Metrics (Métricas) de CloudWatch.

3.    En la página Metrics (Métricas), elija Amazon MQ. A continuación, elija Broker Metrics (Métricas del agente).

4.    En el cuadro de búsqueda, especifique el nombre del agente. A continuación, pulse Intro en el teclado. Aparecerán todas las métricas de CloudWatch para el agente especificado en el cuadro de búsqueda.

5.    Revise el valor de la métrica Store Percentage Usage (Porcentaje de uso del almacén). Si la métrica Store Percentage Usage (Porcentaje de uso del almacén) de su agente alcanza el valor 100, el agente deja de recibir mensajes y devuelve un error Persistent store is Full (El almacén persistente está lleno).

6.    Si la métrica Store Percentage Usage (Porcentaje de uso del almacén) de su agente alcanza el valor 100 (o un valor cercano a 100), revise los valores de las siguientes métricas para determinar la causa:

  • Journal Files for Full Recovery (Archivos de diario para una recuperación completa): indica el número de archivos de diario que se reproducen después de un cierre limpio. Un aumento en esta métrica indica que los consumidores de su agente están funcionando con lentitud o que hay demasiados mensajes pendientes en el almacenamiento persistente.
  • Journal Files for Fast Recovery (Archivos de diario para una recuperación rápido): indica el número de archivos de diario que se reproducen después de un cierre que no ha sido limpio. Un aumento en esta métrica indica que hay demasiados mensajes pendientes en el almacenamiento persistente.

Nota: un archivo de registro (archivo de datos) de diario KahaDB de ActiveMQ puede permanecer en almacenamiento persistente por cualquiera de los siguientes motivos:

  • El archivo de datos incluye un mensaje pendiente para un destino o suscripción a un tema duradero.
  • El archivo de datos incluye un acuse de recibo individual (ACK) para un mensaje que se encuentra en un archivo de datos en uso.
  • El archivo de datos hace referencia a una transacción pendiente.
  • El archivo de datos es un archivo de diario y hay una acción de escritura pendiente.

Para obtener más información, consulte Por qué permanecen los archivos de registro de KahaDB después de la limpieza en la documentación de ActiveMQ.

Reducir la cantidad de datos que se guardan en el almacenamiento persistente de un agente de Amazon MQ para ActiveMQ

Consumir o eliminar los mensajes pendientes que están en las colas del agente y los temas duraderos

Para obtener instrucciones, consulte Cómo purgar una cola en la documentación de Apache ActiveMQ.

Nota: Amazon MQ para ActiveMQ no es compatible con Java Management Extensions (JMX) actualmente. Debe usar la consola web ActiveMQ para purgar las colas y los temas duraderos de su agente.

Consumir o eliminar los mensajes caducados que se encuentran en la cola de mensajes fallidos (DLQ) del agente

Para obtener instrucciones, consulte la sección Descartar automáticamente los mensajes caducados de Reentrega de mensajes y gestión de DLQ en la documentación de Apache ActiveMQ.

Nota: para consumir mensajes en la cola de espera de su agente, primero debe configurar la cola de mensajes fallidos como una cola normal. A continuación, configure a sus consumidores para que sondeen la DLQ directamente.

Prácticas recomendadas para evitar errores “Persistent store is Full” (El almacén persistente está lleno)

Comprobar que ha elegido el tipo de instancia de agente correcto para su caso de uso

Para obtener más información, consulte Elegir el tipo de instancia de agente correcto para obtener el mejor rendimiento en la Guía para desarrolladores de Amazon MQ.

Nota: según el caso de uso, agregar consumidores a su agente a veces puede ayudar con el rendimiento de los mensajes del agente.

Aumentar el número y la velocidad de los consumidores que utiliza

Cuando usa ActiveMQ en modo persistente, la escritura en el almacenamiento suele producirse cuando hay muy pocos consumidores o cuando los consumidores son lentos. Aumentar la cantidad y la velocidad de los consumidores que utiliza puede ayudar a reducir la cantidad de datos que su agente escribe en el almacenamiento persistente.

Configurar una alarma de CloudWatch en función de la métrica “Store Percentage Usage” (Porcentaje de uso del almacén) del agente

Si la métrica Store Percentage Usage (Porcentaje de uso del almacén) de su agente alcanza el valor 100 (o un valor cercano a 100), el agente deja de recibir mensajes. Para que CloudWatch le avise cuando esta métrica alcance un umbral específico, puede configurar una alarma en CloudWatch. A continuación, puede tomar las medidas preventivas descritas en este artículo antes de que se produzca el error.

Para obtener instrucciones, consulte Crear una alarma de CloudWatch basada en un umbral estático en la guía del usuario de CloudWatch.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?