Thread dumps e strumenti di analisi – parte 9

thread-dumps

Se ti sei perso le scorse puntate rimedia subito:

Java possiede dei meccanismi per l’analisi dello stato tutti i thread di un’applicazione in un dato momento: i thread dumps.

I thread dumps sono file generabili attraverso vari comandi o applicazioni. La maniera più semplice per ottenerli è utilizzare un comando incluso nell’installazione della Java Development Kit: jstack -l {PID} dove {PID} è l’id del processo Java da monitorare.

Lo stesso application server è un’applicazione java, quindi nel caso di Web.UP sarà da chiamare il comando con l’id del processo Payara.

I thread dumps sono file di testo quindi sono leggibili abbastanza facilmente senza ulteriori ausili. I thread coinvolti possono però essere numerosi e la lettura e l’incrocio delle informazioni di potenziali problemi può essere facilitata dai cosiddetti Thread Dump Analyzers (TDAs), tool in grado di mostrare le informazioni del dump in una maniera più chiara (generalmente utilizzando grafici). Esempi di tali tool sono fastThread, IBM Thread and Monitor Dump Analyze for Java, irockel TDA.

La parte più interessante dei thread dumps è lo stack trace dei thread, che mostra lo stato di ciascun thread al momento del thread dump. Questo un esempio di stack trace di un dato thread identificato dal sistema col nome Thread-0.

stack-trace-thread

Tra le informazioni più importanti evidenziamo:

  • il nome del thread (Thread-0)
  • lo stato del thread che può essere per esempio RUNNABLE (in esecuzione), WAITING (in attesa), BLOCKED (bloccato)…
  • la riga di codice Java in esecuzione (riga 26 del programma SampleDeadLock.java)

In caso di deadlock è presente anche una sezione aggiuntiva che lo evidenzia. Ecco un esempio di tale sezione su un caso di deadlock creato ad hoc per esercizio:

deadlock-sezione-aggiuntiva

Dalle informazioni mostrate si può comprendere come il thread dump può essere molto utile per indagare in estremo dettaglio cosa stanno facendo i vari thread dell’applicazione in un dato momento e scoprire ad esempio problemi di coordinamento e sincronizzazione.


Chiara Zambelli

Chiara Zambelli
Responsabile CI/CD – Gruppo Sme.UP
My LinkedIn Profile


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *