Strumenti e log di diagnostica

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:

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

Utilità jmap

Pagina man di jmap

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.

Riferimenti