Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation weitere Informationen
In diesem Thema werden Netzwerktools, JVM-Tools und Diagnoselogs beschrieben, 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-Paket-Sniffer-Tool, mit dem Sie TCP/IP-Pakete erfassen oder filtern können, die über ein Netzwerk empfangen oder übertragen werden. Er ist auf Linux/Unix-basierten Betriebssystemen verfügbar. So können Sie dieses Dienstprogramm mit yum installieren:
yum install tcpdump
Das Tool tcpdump eignet sich zur Behebung von Netzwerk- oder SSL-Problemen. Beispiel:
- 502 Bad Gateway-Fehler (durch EOF-Ausnahme verursacht)
- Fehler 503 „Dienst nicht verfügbar“
- SSL-Handshakefehler
Um eines dieser Probleme zu beheben, müssen Sie zuerst das Komponentenpaar ermitteln, in dem der Fehler aufgetreten ist. Im Fall von Edge kann es eines der folgenden Paare sein:
- Client-App und Router
- Router und Message Processor
- Nachrichtenprozessor und Back-End-Server
Nachdem Sie das fehlerhafte 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 diesem empfangen wurden
Verwenden Sie den folgenden tcpdump-Befehl, um alle Pakete zu erfassen, die an einen bestimmten Host (IP-Adresse) gesendet oder von diesem 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 | (interface) gibt die Schnittstelle an, von der die Pakete erfasst werden sollen. Mit dem Wert „any“ können Pakete von allen Schnittstellen erfasst werden. |
-s | (snarf/snaplen) gibt die Menge der aufzunehmenden 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 die Pakete erfasst werden sollen. |
Dateiname | ist der Name der Datei, in die „tcpdump“ geschrieben werden soll. |
Beispiel
Angenommen, Sie möchten die Pakete zwischen dem Nachrichtenprozessor und dem Back-End-Server erfassen:
- Melden Sie sich auf dem Message Processor-Computer an.
- Bestimmen Sie die IP-Adresse des Back-End-Servers (z. B. 22.22.22.22), für den die Pakete erfasst werden sollen.
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 Befehl „tcpdump“ wie unten dargestellt:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Wenn es mehrere Back-End-Server mit unterschiedlichen IP-Adressen gibt (22.22.22.22, 33.33.33.33 und 44.44.44.44), 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
tcpdumps werden analysiert
Sie können tcpdumps mit dem Befehl „tcpdump“ oder dem GUI-basierten Tool Wireshark ansehen und analysieren.
Verweise
Heap-Dumps
Heap-Dumps sind Snapshots des Arbeitsspeichers eines Java-Prozesses. Sie enthalten die Informationen über die Java-Objekte und -Klassen im Heap zum Zeitpunkt der Erfassung des Heap-Dumps. Sie sind in der Regel ziemlich groß und reichen zwischen wenigen 100 MB und wenigen GB.
Der Heap-Dump ist sehr nützlich, wenn ein Java-Prozess wie Message Processor Folgendes anzeigt:
- Hohe Arbeitsspeichernutzung
- OutofMemoryError
Heap-Dump für einen Java-Prozess generieren
Java bietet ein Dienstprogramm namens jmap, mit dem Sie die Speicherstatistiken 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 Head-Dump erfasst werden muss |
Beispiel
Nehmen wir an, der Message Processor mp-east hat eine hohe Speicherauslastung oder gibt OutOfMemory-Fehler aus. Ermitteln Sie die Prozess-ID des Message Processor mithilfe des ps-Befehls auf einem Unix-Betriebssystem. Nehmen wir an, es lautet 24569.
Führen Sie das jmap-Dienstprogramm wie folgt 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 potenzielle Speicherlecks oder die Java-Objekte zu ermitteln, die zu einer hohen Speichernutzung führen.
Verweise
Thread-Dumps
Ein Thread-Dump ist ein Snapshot des Status aller Threads eines laufenden Java-Prozesses. Der Status jedes Threads wird mit dem Inhalt seines Stacks angezeigt. Dieser wird als Stacktrace bezeichnet. Einige der Threads werden Teil der ausgeführten Java-Anwendung sein, während andere interne JVM-Threads sein werden.
Ein Thread-Dump enthält Informationen zu allen Threadaktivitäten der Anwendung. Diese Informationen können für Folgendes nützlich sein:
- Probleme wie CPU-Spitzen, langsame Antwortzeiten oder nicht reagierende Java-Anwendungen diagnostizieren
- Anwendungs- und JVM-Leistung optimieren
Thread-Dumps generieren
Der Thread-Dump für einen Java-Prozess kann wie unten gezeigt mit dem jstack-Dienstprogramm 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 | Der Name der Datei, in die der Thread-Dump geschrieben wird. |
Beispiel
Um einen Thread-Dump für die Prozess-ID 37320 auf dem Message Processor mp-east zu generieren, verwenden Sie den folgenden Befehl:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
Wie 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) anzeigen. Weitere Informationen zu den verschiedenen Abschnitten des Thread-Dumps und zur Interpretation der Informationen finden Sie unter Thread-Dump.