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:
- Melden Sie sich auf dem Message Processor-Computer an.
- 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
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.