Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
W tym temacie omówione są narzędzia sieciowe, narzędzia JVM oraz logi diagnostyczne, których możesz użyć do Rozwiązywanie problemów z siecią i maszyną wirtualną w Apigee Edge.
Narzędzie do sniffera pakietów TCP/IP (tcpdump)
Narzędzie tcpdump to sniffer pakietów wiersza poleceń, który pozwala: przechwytywać lub filtrować pakiety TCP/IP, które są odbierane lub przesyłane przez sieć. Jest dostępna w systemach operacyjnych Linux/Unix. Możesz zainstalować to narzędzie, używając yum jako następujące:
yum install tcpdump
Narzędzie tcpdump przydaje się do rozwiązywania problemów z siecią i protokołem SSL. Dla: przykład:
- Błędy bramy 502 (spowodowane z powodu wyjątku EOF)
- Błędy 503 „Niedostępna usługa”
- Błędy uzgadniania połączenia SSL
Aby rozwiązać dowolny z tych problemów, należy najpierw określić parę składników gdzie wystąpił błąd. W przypadku Edge może przyjmować jedną z tych par:
- Aplikacja kliencka i router
- Router i procesor wiadomości
- Procesor komunikatów i serwer backendu
Po zidentyfikowaniu problematycznej pary komponentów możesz przechwycić pakiety sieciowe używając narzędzia tcpdump na jednym lub obu komponentach.
Przechwytywanie pakietów wysyłanych do/odebranych od określonego hosta za pomocą tcpdump
Użyj poniższego polecenia tcpdump, aby przechwycić wszystkie pakiety wysłane do lub z serwera określonego hosta (adresu IP) i zapisać te informacje w określonym pliku:
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. Zastosowanie wartość „any” umożliwia przechwytywanie pakietów ze wszystkich interfejsów. |
– s | (snarf/snaplen) określa ilość każdego pakietu do przechwycenia. Na podstawie wartości 0 (zero) umożliwia przechwycenie całego pakietu. |
Adres IP | to adres IP hosta, dla którego chcemy przechwytywać pakiety |
Nazwa pliku | to nazwa pliku, w którym ma zostać zapisany plik tcpdump |
Przykład
Załóżmy, że chcesz przechwycić pakiety między procesorem wiadomości a backendem Serwer:
- Zaloguj się na komputerze z procesorem wiadomości.
- Ustal adres IP serwera backendu (przy założeniu, że jest to 22.22.22.22), dla którego chcemy przechwytywanie pakietów.
Użyj poniższego polecenia, aby przechwycić pakiety sieciowe dla hosta o określonym adresie IP adres:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Jeśli serwer backendu określa kilka adresów IP, użyj nazwy hosta backendu serwera w poleceniu tcpdump, jak pokazano poniżej:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Jeśli istnieje wiele serwerów backendu z różnymi adresami IP (22.22.22.22, 33.33.33.33) 44.44.44.44), użyj poniższego 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
Analizuję pliki tcpdumps
Możesz wyświetlić lub przeanalizować plik tcpdump za pomocą polecenia tcpdump lub narzędzia opartego na GUI Wireshark.
Pliki referencyjne
Zrzuty stosu
Zrzuty stosu to migawka pamięci procesu w Javie. Zawierają one informacje o obiektach i klasach Java na stercie w momencie zrzutu stosu zgromadzone dane. Zazwyczaj są one dość duże – od 100 MB do kilku GB.
Zrzut stosu jest bardzo przydatny, gdy proces w Javie, taki jak procesor wiadomości, wyświetla:
- Wysokie wykorzystanie pamięci
- OutofMemoryError
Generowanie zrzutu stosu dla procesu Java
Java udostępnia narzędzie o nazwie jmap, które umożliwia generowanie pamięci statystyk ani zrzutów stosu uruchomionego procesu Java.
Użyj tego polecenia jmap, aby wygenerować zrzut stosu procesu Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Gdzie:
Parametr | Opis |
JAVA_HOME | Jest katalogiem instalacyjnym środowiska Java |
nazwa pliku | Jest nazwą pliku, w którym zostanie zapisany zrzut stosu |
pid | Jest identyfikatorem procesu aplikacji Java, której zrzut nagłówka ma zostać przechwycony |
Przykład
Załóżmy, że procesor wiadomości mp-east ma duże wykorzystanie pamięci lub wysyła Błędy związane z brakiem pamięci. Określ identyfikator procesu procesora wiadomości za pomocą polecenia ps na System operacyjny Unix. Załóżmy, że jest to 24 569.
Aby wygenerować zrzut stosu, 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
Analizuję zrzuty stosu
Zrzuty stosu można analizować za pomocą narzędzia Eclipse MAT (Memory Analyzer), aby określić potencjalne wycieki pamięci lub które obiekty Java powodują wysokie wykorzystanie pamięci.
Pliki referencyjne
Narzędzie Analizator pamięci (MAT)
Zrzuty wątków
Zrzut wątku to migawka stanu wszystkich wątków uruchomionego procesu Java. stanu poszczególnych wątków przedstawia się zawartość stosu, nazywaną zrzutem stosu. Niektóre wątki będą częścią uruchomionej aplikacji Java, a inne wątki wewnętrzne JVM.
Zrzut wątku pozwala uzyskać informacje o działaniach poszczególnych wątków aplikacji. Te informacje mogą być bardzo przydatne, jeśli chcesz:
- Diagnozowanie problemów, takich jak skoki procesora, powolne czasy odpowiedzi lub brak reakcji w Javie aplikacji
- Zoptymalizuj wydajność aplikacji i JVM
Generuję zrzuty wątków
Zrzut wątku procesu Java można wygenerować przy użyciu narzędzia jstack, jak pokazano na ilustracji poniżej:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Gdzie:
Parametr | Opis |
JAVA_HOME | Jest katalogiem instalacyjnym środowiska Java. |
pid | Jest identyfikatorem procesu aplikacji w Javie, której zrzut wątku chcesz przechwycić. |
nazwa pliku | Jest nazwą pliku, w którym zostanie zapisany zrzut wątku. |
Przykład
Generowanie zrzutu wątku dla identyfikatora procesu o identyfikatorze 37320 w procesorze wiadomości 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ątku zostałby zapisany w pliku /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Analizuję zrzuty wątków
Zrzuty wątków możesz wyświetlać w dowolnym edytorze tekstu, takim jak vi (Linux) lub notatnik (Windows). Patrz: Zrzut wątku, w którym znajdują się szczegółowe informacje o różnych sekcjach zrzutu wątków i sposobie interpretowania i informacjami o nich.