Strumenti e log di diagnostica

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:

  1. Accedi al computer dell'elaboratore di messaggi.
  2. 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

utilità jmap

pagina man di jmap

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.

Riferimenti