[Problemreihe] Lösungen für das Problem der Trennung zwischen Verbrauchern und MQ (2)

1. Problembeschreibung

Bei der Verwendung von RabbitMQ als Middleware und dem Konsumenten als Dienst kann die folgende Situation auftreten: Nach einem längeren Zeitraum ohne Nachrichtenzustellung wird die Verbindung zwischen dem Konsumenten und RabbitMQ getrennt, was dazu führt, dass neue Nachrichten nicht verarbeitet werden können. Die Lösung für dieses Problem besteht darin, den Python-Consumer-Dienst neu zu starten, woraufhin die Verbindung wieder normal wird.

2. Lösungsschritte

 Option eins:

[Problemreihe] Lösungen für das Problem der Trennung zwischen Verbrauchern und MQ (1)

Um dieses Problem zu beheben und zu beheben, können Sie die folgenden Schritte ausführen:

  1. Überprüfung der Verbindungseinstellungen:
  2. Überprüfung des Netzwerkstatus:
  3. Überprüfung des Verbraucherkodex:
  4. RabbitMQ-Serverprüfungen:
  5. Überwachungs- und Alarmeinstellungen:

2.4 RabbitMQ-Serverprüfung:

  • Überprüfen Sie die RabbitMQ-Serverprotokolle auf Fehlermeldungen oder Warnungen zu unterbrochenen Verbindungen.
  • Stellen Sie sicher, dass der RabbitMQ-Server über ausreichende Ressourcen verfügt und dass die Verbindung aufgrund von Ressourcenbeschränkungen nicht abnormal getrennt wird.

1. Fehlerbehebung protokollieren

Suchen Sie den Speicherort der RabbitMQ-Protokolldatei:

  • Standardmäßig befinden sich die Protokolldateien von RabbitMQ normalerweise im Verzeichnis /var/log/rabbitmq/ (für Linux). Der genaue Speicherort kann je nach Betriebssystem und Installationsmethode variieren.
  • Sie können den Protokollspeicherort auch über den Parameter log_dir in der RabbitMQ-Konfigurationsdatei bestimmen. Konfigurationsdateien befinden sich normalerweise im Verzeichnis /etc/rabbitmq/.

Öffnen Sie die RabbitMQ-Protokolldatei:

  • Verwenden Sie einen Texteditor oder ein Befehlszeilentool, um die RabbitMQ-Protokolldatei zu öffnen. Unter Linux können Sie beispielsweise die Befehle cat oder tail verwenden.

    cat /var/log/rabbitmq/[email protected]

    Oder verwenden Sie tail, um Echtzeitprotokolle anzuzeigen:

    tail -f /var/log/rabbitmq/[email protected]

Informationen zu Verbindungsabbrüchen finden Sie hier:

  • Durchsuchen Sie die Protokolldatei nach Schlüsselwörtern wie „geschlossen“, „Verbindung getrennt“, „Fehler“ usw., um Meldungen im Zusammenhang mit der Trennung zu finden. Diese Meldungen enthalten in der Regel Informationen über den Verbindungsstatus und mögliche Fehlerursachen.

Achten Sie auf Warn- und Fehlermeldungen:

  • Achten Sie auf Warn- und Fehlermeldungen in den Protokollen, die häufig detaillierte Informationen zum Verbindungsabbruch enthalten. Dies kann Netzwerkprobleme, Authentifizierungsfehler, Ressourcenbeschränkungen usw. umfassen.

Log-Level bestimmen:

  • Stellen Sie sicher, dass die angezeigte Protokollebene ausreichend detaillierte Informationen enthält. In der RabbitMQ-Konfigurationsdatei können Sie den Parameter log_levels festlegen, um die Protokollebene anzupassen. Untere Ebenen enthalten möglicherweise keine detaillierten Verbindungsinformationen.

Erwägen Sie die Aktivierung der TRACE-Protokollierung:

log_levels.{"connection", "channel", "federation"} = trace

Dadurch wird die Protokollebene für die spezifische Komponente auf trace gesetzt.

  • Wenn das Problem komplexer ist, können Sie auch die Aktivierung der TRACE-Protokollebene in der RabbitMQ-Konfigurationsdatei in Betracht ziehen, um detailliertere Tracking-Informationen zu erhalten.

Durch die Anzeige der RabbitMQ-Serverprotokolle erhalten Sie kontextbezogene Informationen über die Verbindungsunterbrechung und können so das Problem genauer lokalisieren und lösen. Stellen Sie während des Fehlerbehebungsprozesses sicher, dass Sie alle Informationen im Protokoll verstanden haben, und versuchen Sie, basierend auf den Eingabeaufforderungen geeignete Maßnahmen zu ergreifen.

2. Ressourcenuntersuchung

Es ist sehr wichtig sicherzustellen, dass der RabbitMQ-Server über ausreichende Ressourcen verfügt, um ungewöhnliche Verbindungsabbrüche aufgrund von Ressourcenbeschränkungen zu vermeiden. Im Folgenden finden Sie detaillierte Schritte zur Fehlerbehebung:

RabbitMQ-Prozessstatus anzeigen:

ps aux | grep rabbitmq

Verwenden Sie das Prozessverwaltungstool Ihres Systems, z. B. ps (Linux) oder den Task-Manager (Windows), um den Status des RabbitMQ-Prozesses zu überprüfen. Stellen Sie sicher, dass der RabbitMQ-Prozess ausgeführt wird und nicht abnormal beendet wurde.

Überprüfen Sie die Systemressourcennutzung:

Verwenden Sie ein Systemüberwachungstool (z. B. top oder htop unter Linux oder den Task-Manager unter Windows), um die Systemressourcennutzung anzuzeigen. Stellen Sie sicher, dass Ressourcen wie Arbeitsspeicher, CPU und Festplatte nicht ausgeschöpft sind.

Status des RabbitMQ-Knotens anzeigen:

rabbitmqctl node_health_check

Verwenden Sie das RabbitMQ-Befehlszeilentool oder das Verwaltungs-Plugin, um den Status Ihrer RabbitMQ-Knoten anzuzeigen. Sie können den Knotenstatus überprüfen, indem Sie den folgenden Befehl ausführen:

Sie können den Knotenstatus auch über die Weboberfläche von RabbitMQ anzeigen (sofern aktiviert).

Überprüfen Sie die RabbitMQ-Protokolle auf ressourcenbezogene Informationen:

Suchen Sie in den Protokolldateien von RabbitMQ nach Warn- oder Fehlermeldungen im Zusammenhang mit Ressourcenlimits. Diese Nachrichten können Informationen darüber enthalten, dass die Ressourcennutzung einen Schwellenwert überschreitet.

Passen Sie die Ressourcenparameter in der RabbitMQ-Konfigurationsdatei an:

Öffnen Sie die RabbitMQ-Konfigurationsdatei (normalerweise im Verzeichnis /etc/rabbitmq/), überprüfen Sie die Parameter im Zusammenhang mit Ressourcenlimits und passen Sie sie an, z. B. vm_memory_high_watermark, < /a >disk_free_limit usw.

Stellen Sie sicher, dass der RabbitMQ-Prozess über genügend Arbeitsspeicher und Speicherplatz verfügt, um Nachrichten zu verarbeiten.

Berücksichtigen Sie die Ressourcenzuteilung zwischen Knoten in einem RabbitMQ-Cluster:

Wenn Sie einen RabbitMQ-Cluster verwenden, stellen Sie sicher, dass die Ressourcen gleichmäßig auf alle Knoten verteilt sind. Die Erschöpfung der Ressourcen auf einem Knoten kann die Stabilität des gesamten Clusters beeinträchtigen.

Überprüfen Sie die Ressourcengrenzen auf Betriebssystemebene:

Stellen Sie sicher, dass die vom Betriebssystem für den RabbitMQ-Prozess festgelegten Ressourcengrenzen angemessen sind. Dazu gehören Dateideskriptoren, maximale Anzahl von Prozessen usw. Sie können das Limit überprüfen, indem Sie sich die Datei /etc/security/limits.conf ansehen (Linux).

Sehen Sie sich die internen Leistungskennzahlen von RabbitMQ an:

Verwenden Sie das RabbitMQ-Verwaltungs-Plugin oder ein Überwachungstool wie Prometheus, um die internen Leistungsmetriken von RabbitMQ anzuzeigen. Dies kann Ihnen helfen zu verstehen, ob RabbitMQ ordnungsgemäß funktioniert und ob potenzielle Ressourcenprobleme vorliegen.

Erwägen Sie ein Upgrade Ihrer RabbitMQ-Version:

Überprüfen Sie die Version von RabbitMQ, die Sie verwenden, um festzustellen, ob bekannte Probleme bei der Ressourcenverwaltung vorliegen. In einigen Fällen kann ein Upgrade auf die neueste Version zur Behebung des Problems beitragen.

Indem Sie die oben genannten Schritte zur Fehlerbehebung Schritt für Schritt ausführen, können Sie den Ressourcenstatus des RabbitMQ-Servers umfassender verstehen und entsprechende Maßnahmen ergreifen, um ausreichende Ressourcen sicherzustellen und so abnormale Verbindungsabbrüche aufgrund von Ressourcenbeschränkungen zu verhindern.

2.5 Überwachungs- und Alarmeinstellungen:

  • Verwenden Sie Überwachungstools, um den Verbindungsstatus von RabbitMQ und Verbrauchern zu überwachen und den Verbindungszustand in Echtzeit zu verstehen.
  • Richten Sie einen Alarmmechanismus ein, um rechtzeitig benachrichtigt zu werden, wenn die Verbindung unterbrochen wird, damit entsprechende Maßnahmen ergriffen werden können.

1. Überwachung

Die Verwendung von Überwachungstools zur Überwachung des Verbindungsstatus von RabbitMQ und Verbrauchern kann Ihnen dabei helfen, den Zustand der Verbindung in Echtzeit zu verstehen und potenzielle Probleme zu identifizieren. Hier sind die detaillierten Schritte:

Überwachen Sie RabbitMQ:

Installieren Sie das RabbitMQ-Management-Plugin:

  • RabbitMQ bietet ein Verwaltungs-Plug-in, um den Status von RabbitMQ über die Weboberfläche anzuzeigen. Stellen Sie sicher, dass das Plugin installiert und aktiviert ist. Sie können das Plugin mit dem folgenden Befehl installieren:

    rabbitmq-plugins enable rabbitmq_management
  • Bestätigen Sie, dass das RabbitMQ-Management-Plugin erfolgreich aktiviert wurde.

Greifen Sie auf die RabbitMQ-Verwaltungsoberfläche zu:

  • Öffnen Sie den Browser und greifen Sie auf die RabbitMQ-Verwaltungsoberfläche zu. Normalerweise lautet die Standardadresse http://localhost:15672/.
  • Melden Sie sich mit dem RabbitMQ-Administratorkonto an (Standard ist guest/guest).

Verbindungsinformationen anzeigen:

Navigieren Sie in der RabbitMQ-Verwaltungsoberfläche zur Registerkarte „Verbindungen“, um die Liste der aktiven Verbindungen anzuzeigen. Hier können Sie den Verbindungsstatus zwischen dem Verbraucher und RabbitMQ sehen, einschließlich Anzahl, Status, Kanalnummer usw. der Verbindungen.

Knotenstatus anzeigen:

Navigieren Sie in der RabbitMQ-Verwaltungsoberfläche zur Registerkarte „Knoten“, um den Gesamtstatus der Knoten anzuzeigen, einschließlich Speichernutzung, Festplattennutzung usw.

Warteschlangeninformationen anzeigen:

Navigieren Sie in der RabbitMQ-Verwaltungsoberfläche zur Registerkarte „Warteschlangen“, um den Status der Warteschlange anzuzeigen, einschließlich der Anzahl der Nachrichten, der Anzahl der Verbraucher usw. Dies hilft, den Rückstand an Nachrichten zu verstehen.

Verbraucher überwachen:

Verwenden Sie Tools zur Überwachung der Anwendungsleistung:

Verwenden Sie Tools zur Überwachung der Anwendungsleistung wie New Relic, Datadog, AppDynamics usw., um Ihre Verbraucheranwendungen zu überwachen. Diese Tools liefern in der Regel detaillierte Informationen über die Echtzeitleistung und den Verbindungsstatus einer Anwendung.

Verwendung von Protokollen und Metriken:

Integrieren Sie Protokollierung und Leistungsmetrikaufzeichnung in Verbrauchercode. Der Aufbau und die Trennung von Verbindungen können durch Protokolle verfolgt werden, und Leistungsindikatoren können den Gesundheitszustand der Verbraucher anzeigen.

Benutzerdefinierte Überwachungspunkte:

Fügen Sie benutzerdefinierte Überwachungspunkte im Verbrauchercode hinzu, z. B. die Protokollierung von Zeitstempeln zu Beginn und am Ende der Verarbeitung von Nachrichten. Dadurch können Sie die Leistung und den Zeitverbrauch der Nachrichtenverarbeitung überwachen, indem Sie diese Zeitstempel überwachen.

Informationen zur Warteschlangenlänge verwenden:

Erwägen Sie in Ihrem Verbrauchercode die Protokollierung und Meldung der Länge der vom Verbraucher verarbeiteten Warteschlange. Eine Erhöhung der Warteschlangenlänge kann ein Zeichen für Verbindungsprobleme oder eine unzureichende Verarbeitungsgeschwindigkeit sein.

Konfigurieren Sie Benachrichtigungen:

Legen Sie Regeln für Überwachungswarnungen fest:

Konfigurieren Sie ein Überwachungstool oder -system, um Warnregeln einzurichten, die benachrichtigt werden, wenn die Anzahl der Verbindungen einen Schwellenwert erreicht, die Warteschlangenlänge einen Grenzwert überschreitet oder die Leistung der Verbraucheranwendung nachlässt.

Alarmbenachrichtigung in Echtzeit:

Nutzen Sie die von Überwachungstools bereitgestellten Echtzeit-Warnmeldungen, um sicherzustellen, dass Sie rechtzeitig über Verbindungsprobleme informiert werden.

Mithilfe dieser Überwachungstools und -einstellungen können Sie den Verbindungsstatus von RabbitMQ und Verbrauchern in Echtzeit verstehen, potenzielle Probleme rechtzeitig erkennen und lösen sowie die Stabilität und Verfügbarkeit des Systems sicherstellen.

おすすめ

転載: blog.csdn.net/weixin_36755535/article/details/134672570