Narzędzia i dzienniki diagnostyczne

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:

  1. Zaloguj się na komputerze z procesorem komunikatów.
  2. 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

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

Jak zebrać zrzut sterty

Narzędzie jmap

Strona podręcznika jmap

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.

Odniesienia