Visualizzazione colli di bottiglia nelle prestazioni

I colli di bottiglia nelle prestazioni possono essere facilmente identificati mediante le viste statistiche. Questo argomento riporta uno scenario in cui si tenterà di migliorare il tempo di esecuzione. La vista Statistiche pacchetto costituisce un buon punto di partenza in quanto identifica i pacchetti responsabili del rallentamento dell'esecuzione. Da questa vista verrà ricercata la classe o il metodo responsabile per le basse prestazioni dell'esecuzione.

All'avvio dell'applicazione di cui creare un profilo, viene abilitata la raccolta delle informazioni sul flusso di esecuzione.  Selezionare l'opzione di creazione profilo L'applicazione è troppo lenta quindi, nelle opzioni dei dettagli, scegliere Mostra dettagli grafici flusso di esecuzione.   

La vista Statistiche pacchetto, una volta aperta, viene visualizzata come segue:

 

Questa vista mostra le statistiche di diverse classi, raggruppate in base ai pacchetti in esse contenuti.  La vista può essere personalizzata in modo da visualizzare qualsiasi tipo di dati statistici, ad esempio assegnazione di memoria o statistiche basate sul tempo.  In questo caso, assicurarsi che le colonne relative al tempo siano visibili in quanto contengono le informazioni necessarie per questo scenario. Fare clic con il tasto destro del mouse, selezionare Scegli colonne, quindi impostare le colonne come visibili.  Ordinare i pacchetti utilizzando la colonna Tempo di base.  Come visualizzato in precedenza, il pacchetto com.ibm.ws.ejbpersistence.dataaccess è l'"area critica" e, in questo pacchetto, DataAccessRequestImpl è la classe responsabile del rallentamento del tempo di esecuzione.

Una volta ottenute queste informazioni, nella vista Statistiche di classe sarà possibile identificare il metodo responsabile per le cattive prestazioni della classe.  


Adesso è possibile vedere che il metodo execute è responsabile delle cattive prestazioni della classe DataAccessRequestImpl; il tempo di esecuzione è molto elevato rispetto al tempo impiegato nell'altro metodo, executeOneRowFBPK.

Esaminare attentamente la vista Statistiche di classe. La classe java.text.NumberFormat è la classe successiva nell'elenco delle classi responsabili per il rallentamento del tempo di esecuzione. In particolare, java.text.NumberFormat.getCurrencyInstance() utilizza tutto il tempo impiegato in questa classe. Questa visione consente di comprendere quante risorse vengono impiegate per utilizzare metodi apparentemente semplici. Anche se NumberFormat.getCurrencyInstance() sembra essere una semplice API, richiamandola più volte, le prestazioni dell'applicazione vengono fortemente influenzate.

Si passi adesso alle chiamate al metodo DataAccessRequestImpl.execute(). Una funzione importante dello strumento di creazione profili è la rappresentazione grafica dell'esecuzione dell'applicazione che consente di visualizzare l'esecuzione del metodo a livello della chiamata al metodo. Questa vista consente di visualizzare il modello di esecuzione e le differenze tra le chiamate allo stesso metodo. Di seguito è riportata la vista Chiamata al metodo che contiene la chiamata a DataAccessRequestImpl.execute().


 

Da questo grafico è possibile visualizzare l'elemento che ha effettuato la chiamata nello stack dell'esecuzione o passare al codice di origine del metodo. È anche possibile visualizzare il tempo impiegato spostando il cursore su qualsiasi barra.

La tabella Chiamata al metodo riportata di seguito, consente di visualizzare le stesse chiamate al metodo ma in formato tabella. Si noti come per la prima chiamata al metodo, il tempo di esecuzione (vedere la colonna Tempo cumulativo) è molto alto rispetto alle successive chiamate.


 

Analizzando lo stack di esecuzione delle chiamate ai metodi, è possibile individuare il motivo per cui questa specifica chiamata è più lenta rispetto alle rimanenti esecuzioni. Osservando il modello della chiamata al metodo, si noterà che la prima chiamata al metodo OnlineItembean.FindByValue(IndexedObject), richiede più tempo rispetto alle chiamate rimanenti.

Quindi, il responsabile per il rallentamento del tempo di esecuzione è la chiamata al metodo OnlineItembean.FindByValue.

 

Argomenti correlati
Panoramica dello strumento Creazione profili

Attività correlate
Creazione del profilo di un'applicazione
Avvio o collegamento di un processo Java

 
 

>