Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
W tym artykule omawiamy narzędzia sieciowe, narzędzia JVM i dzienniki diagnostyczne, których możesz użyć do rozwiązywania problemów z siecią i JVM w Apigee Edge.
Narzędzie do przechwytywania pakietów TCP/IP (tcpdump)
Narzędzie tcpdump to narzędzie do przechwytywania pakietów w wierszu poleceń, które umożliwia przechwytywanie lub filtrowanie pakietów TCP/IP odbieranych lub przesyłanych przez sieć. Jest dostępne w systemach operacyjnych opartych na Linuksie i Uniksie. To narzędzie możesz zainstalować za pomocą narzędzia yum w ten sposób:
yum install tcpdump
Narzędzie tcpdump jest przydatne do rozwiązywania problemów z siecią lub protokołem SSL. Obejmuje to na przykład:
- Błędy 502: Nieprawidłowa brama (spowodowane wyjątkiem EOF)
- Błędy 503: Usługa niedostępna
- Nieudane uzgodnienia połączenia za pomocą protokołu SSL
Aby rozwiązać którykolwiek z tych problemów, musisz najpierw określić parę komponentów, między którymi wystąpił błąd. W przypadku Edge może to być jedna z tych par:
- Aplikacja kliencka i router
- Router i procesor komunikatów
- Procesor komunikatów i serwer backendu
Gdy zidentyfikujesz problematyczną parę komponentów, możesz przechwycić pakiety sieciowe za pomocą narzędzia tcpdump na jednym lub obu tych komponentach.
Przechwytywanie pakietów wysyłanych do lub odbieranych z określonego hosta za pomocą narzędzia tcpdump
Aby przechwycić wszystkie pakiety wysyłane do lub odbierane z a określonego hosta (adresu IP) i zapisać informacje w określonym pliku, użyj tego polecenia tcpdump:
tcpdump -i any -s 0 host <IP address> -w <File name>
Gdzie:
| Parametr | Opis |
| -i | (interfejs) określa interfejs, z którego mają być przechwytywane pakiety. Użycie wartości „any” umożliwia przechwytywanie pakietów ze wszystkich interfejsów. |
| -s | (snarf/snaplen) określa ilość danych z każdego pakietu, które mają zostać przechwycone. Użycie wartości 0 (zero) umożliwia przechwycenie całego pakietu. |
| Adres IP | to adres IP hosta, dla którego chcemy przechwycić pakiety. |
| Nazwa pliku | to nazwa pliku, do którego ma zostać zapisany wynik działania narzędzia tcpdump. |
Przykład
Załóżmy, że chcesz przechwycić pakiety między procesorem komunikatów a serwerem backendu:
- Zaloguj się na komputerze z procesorem komunikatów.
- Określ adres IP serwera backendu (załóżmy, że jest to 22.22.22.22), dla którego chcemy przechwycić pakiety.
Aby przechwycić pakiety sieciowe dla hosta o określonym adresie IP , użyj tego polecenia:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Jeśli serwer backendu jest rozpoznawany jako kilka adresów IP, użyj nazwy hosta serwendu serwera w poleceniu tcpdump, jak pokazano poniżej:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Jeśli masz kilka serwerów backendu o różnych adresach IP (22.22.22.22, 33.33.33.33 i 44.44.44.44), użyj tego polecenia tcpdump:
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
Analizowanie zrzutów tcpdump
Zrzuty tcpdump możesz wyświetlać i analizować za pomocą polecenia tcpdump lub narzędzia Wireshark z graficznym interfejsem użytkownika.
Odniesienia
- Strona podręcznika tcpdump
- Polecenia tcpdump – narzędzie do przechwytywania pakietów sieciowych
- Wireshark
Zrzuty sterty
Zrzuty sterty to migawka pamięci procesu Java. Zawierają informacje o obiektach i klasach Java w stercie w momencie zebrania zrzutu sterty. Zwykle są dość duże – od kilkuset MB do kilku GB.
Zrzut sterty jest bardzo przydatny, gdy proces Java, taki jak procesor komunikatów, wykazuje:
- Wysokie wykorzystanie pamięci
- OutofMemoryError
Generowanie zrzutu sterty dla procesu Java
Java udostępnia narzędzie jmap, które umożliwia generowanie statystyk pamięci lub zrzutów sterty działającego procesu Java.
Aby wygenerować zrzut sterty procesu Java, użyj tego polecenia jmap:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Gdzie:
| Parametr | Opis |
| JAVA_HOME | To katalog instalacyjny Javy. |
| filename | To nazwa pliku, do którego zostanie zapisany zrzut sterty. |
| pid | To identyfikator procesu aplikacji Java, której zrzut sterty ma zostać przechwycony. |
Przykład
Załóżmy, że procesor komunikatów mp-east ma wysokie wykorzystanie pamięci lub zgłasza błędy OutOfMemory. Określ identyfikator procesu procesora komunikatów za pomocą polecenia ps w systemie operacyjnym Unix. Załóżmy, że jest to 24569.
Aby wygenerować zrzut sterty, uruchom narzędzie jmap w ten sposób:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
Analizowanie zrzutów sterty
Zrzuty sterty można analizować za pomocą narzędzia Eclipse MAT (Memory Analyzer Tool), aby określić potencjalne wycieki pamięci lub obiekty Java, które powodują wysokie wykorzystanie pamięci.
Odniesienia
Narzędzie Memory Analyzer Tool (MAT)
Zrzuty wątków
Zrzut wątków to migawka stanu wszystkich wątków działającego procesu Java. Stan każdego wątku jest przedstawiany z zawartością jego stosu, czyli zrzutem stosu. Niektóre wątki będą częścią działającej aplikacji Java, a inne będą wewnętrznymi wątkami JVM.
Zrzut wątków zawiera informacje o aktywnościach każdego wątku aplikacji. Te informacje mogą być bardzo przydatne do:
- diagnozowania problemów, takich jak skoki wykorzystania procesora, długie czasy odpowiedzi lub brak odpowiedzi aplikacji Java
- optymalizowania wydajności aplikacji i JVM.
Generowanie zrzutów wątków
Zrzut wątków procesu Java można wygenerować za pomocą narzędzia jstack, jak pokazano poniżej:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Gdzie:
| Parametr | Opis |
| JAVA_HOME | To katalog instalacyjny Javy. |
| pid | To identyfikator procesu aplikacji Java, której zrzut wątków chcesz przechwycić. |
| filename | To nazwa pliku, do którego zostanie zapisany zrzut wątków. |
Przykład
Aby wygenerować zrzut wątków dla identyfikatora procesu 37320 na procesorze komunikatów mp-east, użyj tego polecenia:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
Zgodnie z powyższym przykładem zrzut wątków procesu zostanie zapisany w pliku /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Analizowanie zrzutów wątków
Zrzuty wątków możesz wyświetlać w dowolnym edytorze tekstu, np. vi (Linux) lub Notatniku (Windows). Więcej informacji o różnych sekcjach zrzutu wątków i interpretowaniu informacji znajdziesz w artykule Zrzut wątków.