Wie behebe ich „Persistent store is full“ (persistenter Speicher ist voll)-Fehler in Amazon MQ for ActiveMQ?

Lesedauer: 5 Minute
0

Ich kann keine Nachrichten an meinen Broker von Amazon MQ for ActiveMQ senden. Wenn ich die Logs des Brokers in Amazon CloudWatch überprüfe, sehe ich den Fehler „Persistent store is full“ (Persistenter Speicher ist voll). Was verursacht den Fehler und wie behebe ich das Problem?

Kurzbeschreibung

Amazon MQ for ActiveMQ gibt CloudWatch den Fehler Persistent store is full (Persistenter Speicher ist voll) zurück, wenn ein Broker sein Speicherlimit erreicht. Wenn ein Broker von Amazon MQ for ActiveMQ sein Speicherlimit erreicht, kann der Broker keine Nachrichten empfangen.

Um den Fehler Persistent store is full (Persistenter Speicher ist voll) zu beheben, bestätigen Sie zunächst die Ursache des Fehlers indem Sie die folgenden CloudWatch-Metriken für Ihren Broker überprüfen:

  • Prozentuale Speichernutzung
  • Journaldateien für vollständige Wiederherstellung
  • Journaldateien für schnelle Wiederherstellung

Reduzieren Sie dann basierend auf den Metriken Ihres Brokers die Datenmenge, die im persistenten Speicher des Brokers gespeichert wird, nach Bedarf.

Um zu verhindern, dass der Fehler erneut auftritt, lesen Sie den Abschnitt Bewährte Methoden zum Verhindern von „persistenter Speicher ist voll“-Fehlern in diesem Artikel. Weitere Informationen finden Sie unter AMQ Message Store und Producer Flow Control in der Apache-ActiveMQ-Dokumentation.

Beispiel einer CloudWatch-Fehlermeldung „Persistent store is full“ (Persistenter Speicher ist voll) für einen Broker von Amazon MQ for 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)

Auflösung

Bestätigen Sie die Fehlerursache

1.    Öffnen Sie die CloudWatch-Konsole.

Wichtig: Stellen Sie sicher, dass Sie sich in derselben AWS-Region anmelden, in der sich Ihr Broker befindet.

2.    Wählen Sie im linken Navigationsbereich Metrics (Metriken). Wählen Sie dann All metrics (Alle Metriken). Die CloudWatch-Metrik-Seite wird geöffnet.

3.    Wählen Sie auf der Seite Metrics (Metriken) Amazon MQ aus. Wählen Sie dann Broker Metrics (Broker-Metriken).

4.    Geben Sie in das Suchfeld den Namen Ihres Brokers ein. Drücken Sie dann die Eingabetaste auf Ihrer Tastatur. Alle CloudWatch-Metriken für den Broker, die Sie in das Suchfeld eingegeben haben, werden angezeigt.

5.    Prüfen Sie den Metrikwert für prozentuale Nutzung. Wenn die Metrik für die prozentuale Speichernutzung Ihres Brokers 100 erreich, empfängt der Broker keine Nachrichten mehr und gibt einen Persistent store is full (Persistenter Speicher ist voll)-Fehler an.

6.    Wenn die Metrik für die prozentuale Speichernutzung Ihres Brokers 100 (oder fast 100) beträgt, überprüfen Sie die Werte der folgenden Metriken, um die Ursache zu ermitteln:

  • Journaldateien für vollständige Wiederherstellung – gibt die Anzahl der Journaldateien an, die nach einem sauberen Herunterfahren wiedergegeben werden. Ein Anstieg dieser Metrik zeigt an, dass entweder die verarbeiteten Nachrichten Ihres Brokers langsam arbeiten oder dass sich zu viele ausstehende Nachrichten im persistenten Speicher befinden.
  • Journaldateien für schnelle Wiederherstellung – gibt die Anzahl der Journaldateien an, die nach einem unsauberen Herunterfahren wiedergegeben werden. Ein Anstieg dieser Metrik deutet darauf hin, dass sich zu viele ausstehende Nachrichten im persistenten Speicher befinden.

Hinweis: Eine ActiveMQ-KAHADB-Journal-Protokolldatei (Datei) kann aus einem der folgenden Gründe im persistenten Speicher verbleiben:

  • Die Datei enthält eine ausstehende Nachricht für ein dauerhaftes Themenabonnement oder ein Ziel.
  • Die Datei enthält eine individuelle Bestätigung (ACK, individual Acknowledgement) für eine Nachricht, die sich in einer verwendeten Datei befindet.
  • Die Datei verweist auf eine ausstehende Transaktion.
  • Die Datei ist eine Journaldatei, und es gibt eine ausstehende Schreibaktion.

Weitere Informationen finden Sie in der ActiveMQ-Dokumentation unter Warum verbleiben KAHADB-Protokolldateien nach der Bereinigung.

Reduzierung der Datenmenge, die in einem Amazon MQ für den persistenten Speicher des ActiveMQ-Brokers gespeichert wird

Verbrauchen oder löschen Sie die ausstehenden Nachrichten, die sich in den Warteschlangen und dauerhaften Themen des Brokers befinden

Anweisungen finden Sie unter Wie lösche ich eine Warteschlange in der Apache-ActiveMQ-Dokumentation.

Hinweis: Amazon MQ for ActiveMQ unterstützt derzeit keine Java Management Extensions (JMX). Sie müssen die ActiveMQ-Webkonsole verwenden, um die Warteschlangen und dauerhaften Themen Ihres Brokers zu löschen.

Konsumieren oder löschen Sie abgelaufene Nachrichten, die sich in der Warteschlange für unzustellbare Nachrichten (DLQ) des Brokers befinden

Anweisungen finden Sie im Abschnitt Abgelaufene Nachrichten automatisch verwerfen von Nachrichten erneut zustellen und Umgang mit der DLQ in der Apache-ActiveMQ-Dokumentation.

Hinweis: Um Nachrichten in der DLQ Ihres Brokers zu konsumieren, konfigurieren Sie zuerst die DLQ als reguläre Warteschlange. Konfigurieren Sie dann Ihre verarbeiteten Nachrichten so, dass sie den DLQ direkt abfragen.

Best Practices zum Verhindern von „Persistent store is full“ (Persistenter Speicher ist voll)-Fehlern

Stellen Sie sicher, dass Sie den richtigen Broker-Instance-Typ für Ihren Anwendungsfall ausgewählt haben

Weitere Informationen finden Sie unter Auswahl des richtigen Broker-Instance-Typs für den besten Durchsatz im Amazon-MQ-Entwicklerhandbuch.

Hinweis: Je nach Anwendungsfall kann das Hinzufügen von verarbeiteten Nachrichten zu Ihrem Broker manchmal den Nachrichtendurchsatz des Brokers verbessern.

Erhöhen Sie die Anzahl und Geschwindigkeit der verarbeiteten Nachrichten, die Sie verwenden

Wenn Sie ActiveMQ im persistenten Modus verwenden, erfolgt das Schreiben in den Speicher normalerweise, wenn entweder zu wenige verarbeitete Nachrichten vorhanden sind oder wenn die verarbeiteten Nachrichten langsam sind. Wenn Sie die Anzahl und Geschwindigkeit der verarbeiteten Nachrichten erhöhen, die Sie verwenden, können Sie die Datenmenge reduzieren, die Ihr Broker in den persistenten Speicher schreibt.

Richten Sie einen CloudWatch-Alarm basierend auf der Metrik „Prozentuale Nutzung speichern“ Ihres Brokers ein

Wenn die Metrik für die prozentuale Speichernutzung Ihres Brokers 100 (oder fast 100) erreicht, empfängt der Broker keine Nachrichten mehr. Damit CloudWatch Sie benachrichtigt, wenn diese Metrik einen bestimmten Schwellenwert erreicht, können Sie in CloudWatch einen Alarm einrichten. Anschließend können Sie die in diesem Artikel beschriebenen präventiven Maßnahmen ergreifen, bevor der Fehler auftritt.

Anweisungen finden Sie unter Erstellung eines CloudWatch-Alarms basierend auf einem statischen Schwellenwert im CloudWatch-Benutzerhandbuch.


Ähnliche Informationen

Sicherstellung einer effektiven Amazon-MQ-Leistung

Protokollierung und Überwachung Amazon-MQ-for-ActiveMQ-Broker

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren