Diagnosetools und -protokolle

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zuApigee X wechseln.
info

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

TCP/IP-Paketsniffer-Tool (tcpdump)

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

yum install tcpdump

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

  • 502 Bad Gateway-Fehler (verursacht durch EOF-Ausnahme)
  • 503 Service Unavailable-Fehler
  • Fehler bei SSL-Handshake

Um eines dieser Probleme zu beheben, müssen Sie zuerst das Komponentenpaar ermitteln, zwischen dem der Fehler aufgetreten ist. Bei Edge kann es sich um eines der folgenden Paare handeln:

  • Client-App und Router
  • Router und Message Processor
  • Message Processor und Back-End-Server

Sobald Sie das problematische Komponentenpaar identifiziert haben, können Sie die Netzwerkpakete mit „tcpdump“ auf einer oder beiden dieser Komponenten erfassen.

Mit „tcpdump“ Pakete erfassen, die an einen bestimmten Host gesendet oder von ihm empfangen wurden

Verwenden Sie den folgenden „tcpdump“-Befehl, um alle Pakete zu erfassen, die an einen bestimmten Host (IP-Adresse) gesendet oder von ihm empfangen wurden, 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 dem Wert „any“ können Sie Pakete von allen Schnittstellen erfassen.
-s (Snarf/Snaplen) gibt die Menge der zu erfassenden Pakete an. Mit dem Wert 0 (Null) können Sie das gesamte Paket erfassen.
IP-Adresse ist die IP-Adresse des Hosts, für den wir die Pakete erfassen möchten.
Dateiname ist der Name der Datei, in die „tcpdump“ schreiben muss.

Beispiel

Angenommen, Sie möchten die Pakete zwischen dem Message Processor und dem Back-End Server erfassen:

  1. Melden Sie sich auf dem Message Processor-Computer an.
  2. Ermitteln Sie die IP-Adresse des Back-End-Servers (nehmen wir an, sie lautet 22.22.22.22), für den wir die Pakete erfassen möchten.

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

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

Wenn der Back-End-Server in mehrere IP-Adressen aufgelöst wird, verwenden Sie den Hostnamen des Back-End Servers im „tcpdump“-Befehl wie unten gezeigt:

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

Wenn es mehrere Back-End-Server mit unterschiedlichen IP-Adressen (22.22.22.22, 33.33.33.33 und 44.44.44.44) gibt, verwenden Sie 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

„tcpdump“-Ausgaben analysieren

Sie können „tcpdump“-Ausgaben mit dem Befehl „tcpdump“ oder dem GUI-basierten Tool Wireshark ansehen oder analysieren.

Verweise

Heap-Dumps

Heap-Dumps sind Snapshots des Speichers eines Java-Prozesses. Sie enthalten die Informationen zu den Java-Objekten und -Klassen im Heap zum Zeitpunkt der Erfassung des Heap-Dumps. Sie sind in der Regel sehr groß und reichen von einigen Hundert MB bis zu einigen GB.

Heap-Dumps sind sehr nützlich, wenn ein Java-Prozess wie der Message Processor Folgendes zeigt:

  • Hohe Speicherauslastung
  • OutofMemoryError

Heap-Dump für einen Java-Prozess generieren

Java bietet ein Tool namens jmap, mit dem Sie die Speicher statistiken oder Heap-Dumps eines laufenden Java-Prozesses generieren können.

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 Ist der Dateiname, in den der Heap-Dump geschrieben wird.
pid Ist die Prozess-ID der Java-Anwendung, deren Heap-Dump erfasst werden muss.

Beispiel

Angenommen, der Message Processor „mp-east“ hat eine hohe Arbeitsspeichernutzung oder gibt OutOfMemory-Fehler aus. Ermitteln Sie die Prozess-ID des Message Processor mit dem Befehl „ps“ unter dem Unix-Betriebssystem. Nehmen wir an, sie lautet 24569.

Führen Sie das Tool „jmap“ 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 Eclipse MAT (Memory Analyzer Tool) analysiert werden, um die potenziellen Speicherlecks zu ermitteln oder herauszufinden, welche Java-Objekte zu einer hohen Arbeitsspeichernutzung führen.

Verweise

Heap-Dump erfassen

Tool „jmap“

„jmap“-Manpage

Memory Analyzer Tool (MAT)


Thread-Dumps

Ein Thread-Dump ist ein Snapshot des Zustands aller Threads eines laufenden Java-Prozesses. Der Zustand jedes Threads wird mit dem Inhalt seines Stacks dargestellt, der als Stacktrace bezeichnet wird. Einige der Threads sind Teil der ausgeführten Java-Anwendung, andere sind interne JVM-Threads.

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

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

Thread-Dumps generieren

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

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 Ist der Dateiname, in den der Thread-Dump geschrieben wird.

Beispiel

Verwenden Sie den folgenden Befehl, um einen Thread-Dump für die Prozess-ID 37320 auf dem Message Processor mp-east zu generieren:

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

Im obigen Beispiel wird der Thread-Dump des Prozesses in der Datei „ /opt/apigee/edge-message-processor/mp-east-threadDump.txt“ gespeichert.

Thread-Dumps analysieren

Sie können Thread-Dumps in jedem Texteditor wie „vi“ (Linux) oder „Notepad“ (Windows) ansehen. Weitere Informationen zu den verschiedenen Abschnitten von Thread-Dumps und zur Interpretation der Informationen finden Sie unter Thread-Dump.

Verweise