<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:
- Melden Sie sich am Message Processor-Computer an.
- 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
- <ph type="x-smartling-placeholder"></ph> tcpdump-manpage
- <ph type="x-smartling-placeholder"></ph> TCPdump-Befehle – ein Netzwerk-Sniffer-Tool
- Wireshark
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
- <ph type="x-smartling-placeholder"></ph> Dienstprogramm jstack
- <ph type="x-smartling-placeholder"></ph> Thread-Dump analysieren: Problem mit hoher CPU-Nutzung
- <ph type="x-smartling-placeholder"></ph> Anleitung zum Analysieren von Java-Thread-Dumps