Stai visualizzando la documentazione di Apigee Edge.
Vai alla
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 i problemi di rete e relativi a JVM su Apigee Edge.
Utilità sniffer TCP/IP (tcpdump)
tcpdump è uno strumento sniffer dei pacchetti a riga di comando che consente di acquisire o filtrare i pacchetti TCP/IP ricevuti o trasferiti su una rete. È disponibile per i sistemi operativi basati su Linux/Unix. Puoi installare questa utilità utilizzando yum come segue:
yum install tcpdump
Lo strumento tcpdump è utile per la risoluzione di problemi relativi alla rete o a SSL. Ad esempio:
- 502 Errori del gateway non validi (a causa di un'eccezione EOF)
- 503 Errori relativi al servizio non disponibile
- Errori di handshake SSL
Per risolvere uno qualsiasi di questi problemi, devi innanzitutto 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 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 (indirizzo IP) specificato 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 devono essere acquisiti i pacchetti. L'utilizzo del valore "any" consente di acquisire 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 di voler acquisire i pacchetti tra il processore di messaggi e il server di backend:
- Accedi al computer dell'elaboratore di messaggi.
- Determina l'indirizzo IP del server di backend (supponendo 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 risolve 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 comando tcpdump riportato di seguito:
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
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 le informazioni sugli oggetti e sulle classi Java nell'heap al momento della raccolta del dump dell'heap. Di solito hanno dimensioni piuttosto grandi, che vanno da pochi GB a pochi GB.
Il dump dell'heap è molto utile quando un processo Java come Message Processor mostra:
- Utilizzo memoria elevato
- OutofMemoryError
Generazione del dump dell'heap per un processo Java
Java fornisce un'utilità chiamata jmap, che consente di generare le statistiche sulla 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 file in cui verrà scritto il dump dell'heap |
pid | È l'ID processo dell'applicazione Java di cui deve essere acquisito il head dump |
Esempio
Supponiamo che il processore di messaggi mp-east abbia un elevato utilizzo di memoria o che restituisca errori di memoria insufficiente. Determina l'ID di 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) per determinare le potenziali perdite di memoria o quali oggetti Java stanno causando un elevato utilizzo della memoria.
Riferimenti
Come raccogliere un dump dell'heap
Strumento di analisi della memoria (MAT)
Thread dump
Un thread dump è uno snapshot dello stato di tutti i thread di un processo Java in esecuzione. Lo stato di ogni thread viene visualizzato con i contenuti del relativo stack, chiamato analisi dello stack. Alcuni thread faranno parte dell'applicazione Java in esecuzione, mentre altri saranno thread interni della JVM.
Un thread dump rivela informazioni su ciascuna attività dei thread dell'applicazione. Queste informazioni possono essere molto utili per:
- Diagnostica problemi quali picchi di CPU, tempi di risposta lenti o applicazioni Java che non rispondono
- Ottimizza le prestazioni di JVM e applicazioni
Generazione di Thread dump
Il thread dump 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 processo dell'applicazione Java di cui vuoi acquisire il thread dump. |
filename | È il nome del file in cui verrà scritto il thread dump. |
Esempio
Per generare un thread dump 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 thread dump del processo verrebbe salvato nel file /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Analisi dei Thread dump
Puoi visualizzare i thread dump in qualsiasi editor di testo, come vi (Linux) e blocco note (Windows). Consulta la sezione Thread Dump per maggiori dettagli sulle diverse sezioni di Thread Dump e su come interpretare le informazioni.