Come posso risolvere gli errori "Persistent store is Full" ("L'archivio persistente è pieno") in Amazon MQ per ActiveMQ?

Ultimo aggiornamento: 19/04/2022

Non riesco a inviare messaggi al mio broker Amazon MQ per ActiveMQ. Quando esamino i registri del broker in Amazon CloudWatch, visualizzo l'errore "Persistent store is Full" ("L'archivio persistente è pieno"). Che cosa causa l'errore e come posso risolvere il problema?

Breve descrizione

Amazon MQ per ActiveMQ restituisce l'errore di archivio persistente pieno a CloudWatch quando un broker raggiunge il limite di archiviazione. Quando un broker Amazon MQ per ActiveMQ raggiunge il limite di archiviazione, il broker non può ricevere messaggi.

Per risolvere l'errore di archivio persistente pieno, prima di tutto verifica la causa dell'errore esaminando i seguenti parametri di CloudWatch per il broker:

  • Utilizzo percentuale dell'archivio
  • File di journal per il ripristino completo
  • File di journal per il ripristino rapido

Quindi, in base ai parametri del tuo broker, riduci la quantità di dati che vengono salvati nell'archiviazione persistente del broker come richiesto.

Per evitare che l'errore si ripeta, consulta la sezione Best practice per prevenire gli errori "Persistent store is Full" ("L'archivio persistente è pieno") di questo articolo. Per ulteriori informazioni, consulta le sezioni AMQ Message Store e Producer Flow Control, in lingua inglese, nella documentazione di Apache ActiveMQ.

Esempio di messaggio di errore CloudWatch "Persistent store is Full" ("L'archivio persistente è pieno") per un broker Amazon MQ per 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)

Risoluzione

Conferma della causa dell'errore

1.    Apri la console CloudWatch.

Importante: assicurati di accedere alla stessa regione AWS in cui si trova il tuo broker.

2.    Nel pannello di navigazione a sinistra, scegli Metrics (Parametri). Quindi, scegli All metrics (Tutti i parametri). Viene visualizzata la pagina Metrics (Parametri) di CloudWatch.

3.    Nella pagina Metrics (Parametri), scegli Amazon MQ. Quindi, scegli Broker Metrics (Parametri del broker).

4.    Nella casella di ricerca, inserisci il nome del tuo broker. Quindi, premi Invio sulla tastiera. Vengono visualizzati tutti i parametri di CloudWatch per il broker che hai inserito nella casella di ricerca.

5.    Controlla il valore del parametro Store Percentage Usage (Utilizzo percentuale dell'archivio). Se il parametro Store Percentage Usage (Utilizzo percentuale dell'archivio) del broker raggiunge 100, il broker smette di ricevere messaggi e restituisce l'errore Persistent store is Full (L'archivio persistente è pieno).

6.    Se il parametro Store Percentage Usage (Utilizzo percentuale dell'archivio) del broker è 100 (o vicino a 100), controlla i valori dei seguenti parametri per determinare la causa:

  • File di journal per il ripristino completo: indica il numero di file di journal che vengono riprodotti dopo un arresto completo. L'incremento di questo parametro indica che i consumatori del broker stanno rallentando o che ci sono troppi messaggi in sospeso nell'archiviazione persistente.
  • File di journal per il ripristino rapido: indica il numero di file di journal che vengono riprodotti dopo un arresto non pulito. L'incremento di questo parametro indica che ci sono troppi messaggi in sospeso nell'archiviazione persistente.

Nota: un file di log del journal ActiveMQ KahaDB (file di dati) può rimanere nell'archiviazione persistente per uno dei seguenti motivi:

  • Il file di dati include un messaggio in sospeso per l'iscrizione a un argomento o una destinazione duratura.
  • Il file di dati include un riconoscimento (ACK) individuale per un messaggio contenuto in un file di dati in uso.
  • Il file di dati fa riferimento a una transazione in sospeso.
  • Il file di dati è un file di journal e su di esso è presente un'operazione di scrittura in sospeso.

Per ulteriori informazioni, consulta la sezione Why do KahaDB log files remain after cleanup ("Perché rimangono i file di registro KahaDB dopo la pulizia"), in lingua inglese, nella documentazione di ActiveMQ.

Per ridurre la quantità di dati salvati nell'archiviazione persistente di un broker Amazon MQ per ActiveMQ

Consuma o elimina i messaggi in sospeso che si trovano nelle code e negli argomenti durevoli del broker

Per istruzioni, consulta la sezione How do I purge a queue ("Come svuotare una coda"), in lingua inglese, nella documentazione di Apache ActiveMQ.

Nota: Amazon MQ per ActiveMQ attualmente non supporta Java Management Extensions (JMX). Per eliminare le code e gli argomenti durevoli del broker è necessario utilizzare la console Web di ActiveMQ.

Consuma o elimina i messaggi scaduti che si trovano nella coda dei messaggi non recapitabili (DLQ) del broker

Per istruzioni, consulta la sezione Automatically discard expired messages ("Eliminare automaticamente i messaggi scaduti") dell'argomento Message redelivery and DLQ handling ("Nuovo recapito dei messaggi e gestione dei messaggi non recapitabili (DLQ)"), in lingua inglese, nella documentazione di Apache ActiveMQ.

Nota: per consumare messaggi nel DLQ del broker, prima configura il DLQ come una coda normale. Quindi, configura i consumatori di modo che eseguano direttamente il polling del DLQ.

Best practice per prevenire gli errori "Persistent store is Full" ("L'archivio persistente è pieno")

Verifica di avere scelto il tipo di istanza broker corretto per il tuo caso d'uso

Per maggiori informazioni, consulta la sezione Scegli il tipo di istanza broker corretta per il miglior throughput nella Guida per gli sviluppatori di Amazon MQ.

Nota: a seconda del caso d'uso, a volte aggiungere consumatori al broker può migliorare la velocità effettiva dei messaggi del broker.

Aumenta il numero e la velocità dei consumatori che utilizzi

Quando utilizzi ActiveMQ in modalità persistente, la scrittura nell'archiviazione di solito si verifica quando i consumatori sono troppo pochi o sono lenti. Aumentare il numero e la velocità dei consumatori che utilizzi può contribuire a ridurre la quantità di dati che il broker scrive nell'archiviazione persistente.

Imposta un allarme CloudWatch in base al parametro del broker "Store Percentage Usage" (Utilizzo percentuale dell'archivio)

Se il parametro Store Percentage Usage (Utilizzo percentuale dell'archivio) del broker raggiunge 100 (o un valore vicino a 100), il broker smette di ricevere messaggi. Per fare in modo che CloudWatch ti avvisi quando questo parametro raggiunge una soglia specifica, puoi impostare un allarme in CloudWatch. Dopodiché, puoi intraprendere le operazioni preventive descritte in questo articolo prima che si verifichi l'errore.

Per istruzioni, consulta la sezione Creare un allarme CloudWatch basato su una soglia statica nella Guida per l'utente di CloudWatch.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?