Strumenti e log di diagnostica

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:

  1. Accedi al computer del processore di messaggi.
  2. 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

utility jmap

Pagina man di jmap

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.

Riferimenti