Diagnosetools und -protokolle

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

In diesem Thema werden Netzwerktools, JVM-Tools und Diagnoseprotokolle erläutert, mit denen Sie Netzwerk- und JVM-bezogene Probleme in Apigee Edge beheben können.

Dienstprogramm für TCP/IP-Paket-Sniffer (tcpdump)

Das tcpdump-Tool ist ein Befehlszeilen-Sniffer-Tool, mit dem Sie TCP/IP-Pakete, die über ein Netzwerk empfangen oder übertragen werden, erfassen oder filtern. Es ist verfügbar auf Linux-/Unix-basierten Betriebssystemen. Sie können dieses Dienstprogramm mit yum installieren als: folgt:

yum install tcpdump

Das tcpdump-Tool ist nützlich, um Netzwerk- oder SSL-bezogene Probleme zu beheben. Beispiel:

  • 502 Bad Gateway-Fehler (verursacht durch EOF-Ausnahme)
  • 503 Dienst - Fehler nicht verfügbar
  • SSL-Handshake-Fehler

Um eines dieser Probleme zu beheben, müssen Sie zunächst das Komponentenpaar zwischen wo der Fehler aufgetreten ist. Im Fall von Edge kann es eines der folgenden Paare sein:

  • Client-App und Router
  • Router und Message Processor
  • Message Processor und Backend-Server

Sobald Sie die problematischen Komponenten identifiziert haben, können Sie die Netzwerkpakete erfassen „tcpdump“ für eine oder beide dieser Komponenten.

Mit „tcpdump“ Pakete erfassen, die an einen bestimmten Host gesendet bzw. von diesem empfangen werden

Verwenden Sie den folgenden tcpdump-Befehl, um alle Pakete zu erfassen, die an einen angegebenen Host (IP-Adresse) und speichern Sie die Informationen in der angegebenen Datei:

tcpdump -i any -s 0 host <IP address> -w <File name>

Wobei:

Parameter Beschreibung
-i (Schnittstelle) gibt die Schnittstelle an, von der die Pakete erfasst werden sollen. Mit Mit dem Wert „any“ können Pakete von allen Schnittstellen erfasst werden.
-s (snarf/snaplen) gibt die Menge der einzelnen Pakete an, die erfasst werden sollen. Den Wert 0 verwenden (Null) ermöglicht es Ihnen, das gesamte Paket zu erfassen.
IP-Adresse ist die IP-Adresse des Hosts, für den die Pakete erfasst werden sollen.
Dateiname ist der Name der Datei, in die „tcpdump“ geschrieben werden muss.

Beispiel

Angenommen, Sie möchten die Pakete zwischen dem Message Processor und dem Backend erfassen. Server:

  1. Melden Sie sich am Message Processor-Computer an.
  2. Bestimmen Sie die IP-Adresse des Backend-Servers (vorausgesetzt, es ist 22.22.22.22), für den wir um die Pakete zu erfassen.

Verwenden Sie den folgenden Befehl, um die Netzwerkpakete für einen Host mit einer bestimmten IP-Adresse zu erfassen Adresse:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

Wenn der Backend-Server mehrere IP-Adressen auflöst, verwenden Sie den Hostnamen des Backends Server im Befehl „tcpdump“ ein, wie unten gezeigt:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

Wenn es mehrere Backend-Server mit unterschiedlichen IP-Adressen (22.22.22.22, 33.33.33.33) gibt und 44.44.44.44) und verwenden Sie dann den folgenden tcpdump-Befehl:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

tcpdumps analysieren

Sie können „tcpdumps“ mit dem Befehl „tcpdump“ oder dem GUI-basierten Tool Wireshark aufrufen und analysieren.

Verweise

Heap-Dumps

Heap-Dumps sind eine Momentaufnahme des Arbeitsspeichers eines Java-Prozesses. Sie enthalten die Informationen zu den Java-Objekten und -Klassen im Heap-Dump gesammelt. Sie sind in der Regel ziemlich groß und liegen zwischen wenigen 100 MB und wenigen GB.

Der Heap-Dump ist sehr nützlich, wenn ein Java-Prozess wie der Message Processor Folgendes anzeigt:

  • Hohe Arbeitsspeichernutzung
  • OutofMemoryError

Heap-Dump für einen Java-Prozess generieren

Java stellt ein Dienstprogramm namens jmap zur Verfügung, mit dem Sie Speicher generieren können. oder Heap-Dumps eines laufenden Java-Prozesses.

Verwenden Sie den folgenden jmap-Befehl, um den Heap-Dump eines Java-Prozesses zu generieren:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

Wobei:

Parameter Beschreibung
JAVA_HOME Ist das Installationsverzeichnis von Java
filename Der Dateiname, in den der Heap-Dump geschrieben wird
pid Ist die Prozess-ID der Java-Anwendung, deren Head-Dump erfasst werden muss

Beispiel

Nehmen wir an, der Message Processor mp-east hat eine hohe Arbeitsspeichernutzung oder Fehler aufgrund von unzureichendem Arbeitsspeicher. Bestimmen Sie die Prozess-ID des Message Processor mit dem ps-Befehl an Unix-Betriebssystem. Angenommen, es lautet 24569.

Führen Sie das jmap-Dienstprogramm so aus, um den Heap-Dump zu generieren:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

Heap-Dumps analysieren

Heap-Dumps können mit dem Eclipse MAT (Memory Analyzer) analysiert werden, um potenzieller Speicherlecks oder die Java-Objekte, die zu einer hohen Speichernutzung führen.

Verweise

<ph type="x-smartling-placeholder"></ph> Heap-Dump erfassen

<ph type="x-smartling-placeholder"></ph> jmap-Dienstprogramm

<ph type="x-smartling-placeholder"></ph> jmap-Manpage

<ph type="x-smartling-placeholder"></ph> Speicheranalysetool (MAT)


Thread-Dumps

Ein Thread-Dump ist ein Snapshot des Status aller Threads eines laufenden Java-Prozesses. Die jedes Threads wird mit dem Inhalt seines Stacks dargestellt, der als Stacktrace bezeichnet wird. Einige Threads sind Teil der ausgeführten Java-Anwendung, während andere Interne JVM-Threads

Ein Thread-Dump enthält Informationen zu den einzelnen Thread-Aktivitäten der Anwendung. Diese Informationen können für Folgendes sehr nützlich sein:

  • Probleme wie CPU-Spitzen, langsame Antwortzeiten oder nicht reagierende Java diagnostizieren Anwendungen
  • Anwendungs- und JVM-Leistung optimieren

Thread-Dumps generieren

Der Thread-Dump für einen Java-Prozess kann mit dem jstack-Dienstprogramm wie gezeigt generiert werden unten:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

Wobei:

Parameter Beschreibung
JAVA_HOME Ist das Installationsverzeichnis von Java.
pid Ist die Prozess-ID der Java-Anwendung, deren Thread-Dump Sie erfassen möchten.
filename Der Dateiname, in den der Thread-Dump geschrieben wird.

Beispiel

Generieren eines Thread-Dumps für die Prozess-ID 37320 in Message Processor mp-east den folgenden Befehl aus:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

Wie im Beispiel oben wird der Thread-Dump des Prozesses im /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Thread-Dumps analysieren

Sie können Thread-Dumps in einem beliebigen Texteditor anzeigen, z. B. in vi (Linux) oder Notepad (Windows). Weitere Informationen finden Sie unter Thread-Dump weitere Informationen zu den verschiedenen Abschnitten des Thread-Dumps und zur Interpretation des Informationen.

Verweise