Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Questo argomento descrive gli strumenti di rete, gli strumenti JVM e i log di diagnostica che puoi utilizzare per risolvere i problemi relativi alla rete e alla JVM su Apigee Edge.
Utilità di sniffing dei pacchetti TCP/IP (tcpdump)
Lo strumento tcpdump è uno strumento di sniffing dei pacchetti da riga di comando che consente di acquisire o filtrare i pacchetti TCP/IP ricevuti o trasferiti su una rete. È disponibile sui sistemi operativi basati su Linux/Unix. Puoi installare questa utilità utilizzando yum come segue:
yum install tcpdump
Lo strumento tcpdump è utile per risolvere i problemi relativi alla rete o a SSL. Ad esempio:
- Errori 502 Bad Gateway (causati da un'eccezione EOF)
- Errori 503 Service Unavailable
- Errori di handshake SSL
Per risolvere uno di questi problemi, devi prima determinare la coppia di componenti tra cui si è verificato l'errore. Nel caso di Edge, può essere una delle seguenti coppie:
- App client e router
- Router e processore di messaggi
- Processore di messaggi e server di backend
Una volta identificata la coppia di componenti problematica, puoi acquisire i pacchetti di rete utilizzando tcpdump su uno o entrambi i componenti.
Acquisizione dei pacchetti inviati/ricevuti da un host specifico utilizzando tcpdump
Utilizza il seguente comando tcpdump per acquisire tutti i pacchetti inviati o ricevuti da un host (indirizzo IP) specificato e salvare le informazioni nel file specificato:
tcpdump -i any -s 0 host <IP address> -w <File name>
Dove:
| Parametro | Descrizione |
| -i | (interfaccia) specifica l'interfaccia da cui devono essere acquisiti i pacchetti. L'utilizzo del valore "any" consente di acquisire i pacchetti da tutte le interfacce. |
| -s | (snarf/snaplen) specifica la quantità di ogni pacchetto da acquisire. L'utilizzo del valore 0 (zero) consente di acquisire l'intero pacchetto. |
| Indirizzo IP | è l'indirizzo IP dell'host per il quale vogliamo acquisire i pacchetti |
| Nome file | è il nome del file in cui deve essere scritto tcpdump |
Esempio
Supponiamo che tu voglia acquisire i pacchetti tra il processore di messaggi e il server di backend Server:
- Accedi al computer del processore di messaggi.
- Determina l'indirizzo IP del server di backend (supponiamo che sia 22.22.22.22) per il quale vogliamo acquisire i pacchetti.
Utilizza il seguente comando per acquisire i pacchetti di rete per un host con un indirizzo IP specifico:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Se il server di backend viene risolto in più indirizzi IP, utilizza il nome host del server di backend nel comando tcpdump come mostrato di seguito:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Se sono presenti più server di backend con indirizzi IP diversi (22.22.22.22, 33.33.33.33 e 44.44.44.44), utilizza il seguente comando 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
Analisi dei tcpdump
Puoi visualizzare o analizzare i tcpdump utilizzando il comando tcpdump o lo strumento basato su GUI Wireshark.
Riferimenti
Dump dell'heap
I dump dell'heap sono un'istantanea della memoria di un processo Java. Contengono le informazioni sugli oggetti e sulle classi Java nell'heap al momento della raccolta del dump dell'heap. In genere sono di dimensioni piuttosto grandi, da poche centinaia di MB a pochi GB.
Il dump dell'heap è molto utile quando un processo Java, ad esempio il processore di messaggi, mostra:
- Utilizzo elevato della memoria
- OutofMemoryError
Generazione del dump dell'heap per un processo Java
Java fornisce un'utilità chiamata jmap, che consente di generare le statistiche di memoria o i dump dell'heap di un processo Java in esecuzione.
Utilizza il seguente comando jmap per generare il dump dell'heap di un processo Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Dove:
| Parametro | Descrizione |
| JAVA_HOME | È la directory di installazione di Java |
| filename | È il nome del file in cui verrà scritto il dump dell'heap |
| pid | È l'ID del processo dell'applicazione Java di cui deve essere acquisito il dump dell'heap |
Esempio
Supponiamo che il processore di messaggi mp-east abbia un utilizzo elevato della memoria utilizzata o generi errori OutOfMemory. Determina l'ID del processo del processore di messaggi utilizzando il comando ps sul sistema operativo Unix. Supponiamo che sia 24569.
Esegui l'utilità jmap come segue per generare il dump dell'heap:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
Analisi dei dump dell'heap
I dump dell'heap possono essere analizzati utilizzando Eclipse MAT (Memory Analyzer Tool) per determinare le potenziali perdite di memoria o quali oggetti Java causano un utilizzo elevato della memoria.
Riferimenti
Come raccogliere un dump dell'heap
Strumento di analisi della memoria (MAT)
Dump dei thread
Un dump dei thread è un'istantanea dello stato di tutti i thread di un processo Java in esecuzione. Lo stato di ogni thread viene presentato con i contenuti del relativo stack, denominato analisi dello stack. Alcuni thread fanno parte dell'applicazione Java in esecuzione, mentre altri sono thread interni della JVM.
Un dump dei thread rivela informazioni sulle attività di ciascun thread dell'applicazione. Queste informazioni possono essere molto utili per:
- Diagnosticare problemi come picchi di CPU, tempi di risposta lenti o applicazioni Java che non rispondono
- Ottimizzare le prestazioni dell'applicazione e della JVM
Generazione di dump dei thread
Il dump dei thread per un processo Java può essere generato utilizzando l'utilità jstack come mostrato di seguito:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Dove:
| Parametro | Descrizione |
| JAVA_HOME | È la directory di installazione di Java. |
| pid | È l'ID del processo dell'applicazione Java di cui vuoi acquisire il dump dei thread. |
| filename | È il nome del file in cui verrà scritto il dump dei thread. |
Esempio
Per generare un dump dei thread per l'ID processo 37320 sul processore di messaggi mp-east, utilizza il seguente comando:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
Come nell'esempio precedente, il dump dei thread del processo verrà salvato nel file /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Analisi dei dump dei thread
Puoi visualizzare i dump dei thread in qualsiasi editor di testo, ad esempio vi (Linux) o Blocco note (Windows). Per informazioni dettagliate sulle diverse sezioni del dump dei thread e su come interpretare le informazioni, consulta Dump dei thread.