Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Questo argomento illustra gli strumenti di rete, gli strumenti JVM e i log di diagnostica che puoi utilizzare per risolvere problemi relativi a rete e JVM su Apigee Edge.
Utilità sniffer pacchetti TCP/IP (tcpdump)
Lo strumento tcpdump è uno sniffer di pacchetti dalla riga di comando che consente acquisire o filtrare pacchetti TCP/IP ricevuti o trasferiti su una rete. È disponibile su sistemi operativi basati su Linux/Unix. Puoi installare questa utilità usando yum come che segue:
yum install tcpdump
Lo strumento tcpdump è utile per la risoluzione di problemi di rete o di SSL. Per esempio:
- 502 Errori del gateway non validi (causati a causa di un'eccezione EOF)
- Errori 503 "Servizio non disponibile"
- Errori di handshake SSL
Per risolvere uno di questi problemi, devi prima determinare la coppia di componenti tra in cui si è verificato l'errore. Nel caso di Edge, può trattarsi di 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 usando tcpdump su uno o entrambi questi componenti.
Acquisizione di pacchetti inviati a/ricevuti da un host specifico utilizzando tcpdump
Utilizza il seguente comando tcpdump per acquisire tutti i pacchetti inviati o ricevuti da un host specificato (indirizzo IP) e salva le informazioni nel file specificato:
tcpdump -i any -s 0 host <IP address> -w <File name>
Dove:
Parametro | Descrizione |
-i | (interface) specifica l'interfaccia da cui i pacchetti devono essere acquisiti. Utilizzo il valore "any" permette di acquisire pacchetti da tutte le interfacce. |
-s | (snarf/snaplen) specifica la quantità di ciascun pacchetto da acquisire. Utilizzo del valore 0 (zero) consente di acquisire l'intero pacchetto. |
Indirizzo IP | è l'indirizzo IP dell'host per cui vogliamo acquisire i pacchetti |
Nome file | è il nome del file in cui deve essere scritto tcpdump |
Esempio
Supponiamo di voler acquisire i pacchetti tra il processore di messaggi e il backend Server:
- Accedi al computer del processore di messaggi.
- Determinare l’indirizzo IP del server di backend (supponendo che sia 22.22.22.22) per il quale vogliamo per acquisire i pacchetti.
Utilizza il comando seguente per acquisire i pacchetti di rete per un host con un IP specifico indirizzo:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Se il server di backend si risolve in più indirizzi IP, utilizza il nome host del 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), quindi usa 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 di tcpdumps in corso...
Puoi visualizzare o analizzare tcpdump utilizzando il comando tcpdump o lo strumento basato su GUI Wireshark.
Riferimenti
Dump dell'heap
I dump dell'heap sono uno snapshot della memoria di un processo Java. Contengono informazioni sugli oggetti e sulle classi Java nell'heap al momento in cui viene eseguito il dump dell'heap raccolte. Di solito hanno dimensioni piuttosto grandi che vanno da qualche 100 MB a pochi GB.
Il dump dell'heap è molto utile quando un processo Java come il processore di messaggi mostra:
- Memoria utilizzata elevata
- OutofMemoryError
Generazione del dump dell'heap per un processo Java
Java offre un'utilità chiamata jmap, che consente di generare o i dump dell'heap di un processo Java in esecuzione.
Usa 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 |
nome file | è 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 della testa |
Esempio
Supponiamo che il processore di messaggi mp-east abbia una memoria elevata o stia generando Errori OutOfMemory. Determinare l'ID di processo del processore di messaggi utilizzando il comando ps il sistema operativo Unix. Supponiamo che sia 24569.
Per generare il dump dell'heap, esegui l'utilità jmap come segue:
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 potenziali perdite di memoria o quali oggetti Java stanno portando a 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 è uno snapshot dello stato di tutti i thread di un processo Java in esecuzione. La lo stato di ogni thread viene presentato con i contenuti del relativo stack, noto come analisi dello stack. Alcuni thread faranno parte dell'applicazione Java in esecuzione, mentre altri Thread interni JVM.
Un dump dei thread rivela informazioni sulle attività di ciascuna delle attività dei thread dell'applicazione. Queste informazioni possono essere molto utili per:
- Diagnostica i problemi quali picchi della CPU, tempi di risposta lenti o mancata risposta del codice Java applicazioni
- Ottimizza le prestazioni delle applicazioni e JVM
Generazione di dump dei thread
Il dump dei thread per un processo Java può essere generato utilizzando l'utilità jstack come mostrato sotto:
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 del thread. |
nome file | È il nome del file in cui verrà scritto il dump del thread. |
Esempio
a generare un dump dei thread per l'ID di 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 del thread del processo veniva salvato /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), blocco note (Windows). Consulta Thread Dump per maggiori dettagli sulle diverse sezioni di Thread Dump e su come interpretare informazioni.