Trovare e diagnosticare i problemi di prestazioni con Application Insights

Application Insights raccoglie i dati di telemetria dall'applicazione per consentire di analizzarne il funzionamento e le prestazioni. È possibile usare queste informazioni per identificare i problemi che potrebbero verificarsi o per individuare i miglioramenti da apportare all'applicazione che potrebbero influire maggiormente sugli utenti. Questa esercitazione illustra il processo di analisi delle prestazioni sia dei componenti server dell'applicazione che dalla prospettiva del client.

Scopri come:

  • Identificare le prestazioni delle operazioni lato server.
  • Analizzare le operazioni del server per determinare la causa radice delle prestazioni lente.
  • Identificare le operazioni lato client più lente.
  • Analizzare i dettagli delle visualizzazioni di pagina usando il linguaggio di query.

Prerequisiti

Per completare questa esercitazione:

  • Installare Visual Studio 2019 con i carichi di lavoro seguenti:
    • Sviluppo ASP.NET e Web
    • Sviluppo di Azure
  • Distribuire un'applicazione .NET in Azure e abilitare Application Insights SDK
  • Abilitare Application Insights Profiler per l'applicazione.

Accedere ad Azure

Accedere al portale di Azure.

Identificare le operazioni del server con maggiori rallentamenti

Application Insights raccoglie i dettagli sulle prestazioni per le diverse operazioni nell'applicazione. Identificando le operazioni con la durata più lunga, è possibile diagnosticare potenziali problemi o indirizzare lo sviluppo in corso per migliorare le prestazioni complessive dell'applicazione.

  1. Selezionare Application Insights e quindi selezionare la sottoscrizione in uso.

  2. Per aprire il pannello Prestazioni, selezionare Prestazioni nel menu Analisi oppure selezionare il grafico Tempo di risposta server.

    Screenshot che mostra la visualizzazione Prestazioni.

  3. La schermata Prestazioni mostra il conteggio e la durata media di ogni operazione per l'applicazione. È possibile usare queste informazioni per identificare le operazioni che influiscono maggiormente sugli utenti. In questo esempio le operazioni GET Customers/Details e GET Home/Index sono probabili candidati per l'analisi a causa della durata e del numero di chiamate relativamente elevati. Altre operazioni potrebbero avere una durata maggiore, ma sono state chiamate raramente, quindi l'effetto del loro miglioramento sarebbe minimo.

    Screenshot che mostra il pannello Server prestazioni.

  4. Il grafico mostra attualmente la durata media delle operazioni selezionate nel tempo. È possibile passare al 95° percentile per trovare i problemi di prestazioni. Aggiungere le operazioni a cui si è interessati aggiungendole al grafico. Il grafico mostra che ci sono alcuni picchi che vale la pena analizzare. Per isolarli ulteriormente, ridurre l'intervallo di tempo del grafico.

    Screenshot che mostra le operazioni di aggiunta.

  5. Il pannello delle prestazioni a destra illustra la distribuzione delle durate per le diverse richieste per l'operazione selezionata. Ridurre l'intervallo di tempo per l'avvio al 95° percentile circa. La scheda Principali 3 informazioni dettagliate sulle dipendenze può indicare a colpo d'occhio che le dipendenze esterne contribuiscono probabilmente alle transazioni lente. Selezionare il pulsante con il numero di campioni per visualizzare un elenco degli esempi. Selezionare quindi un esempio per visualizzare i dettagli delle transazioni.

  6. È possibile osservare a colpo d'occhio che la chiamata alla tabella di Azure Fabrikamaccount contribuisce maggiormente alla durata totale della transazione. Noterete anche che un'eccezione ne ha causato l'esito negativo. Selezionare un elemento nell'elenco per visualizzarne i dettagli sul lato destro.

    Screenshot che mostra i dettagli delle transazioni end-to-end dell'operazione.

  7. Profiler consente di ottenere altre informazioni con la diagnostica a livello di codice mostrando il codice effettivo eseguito per l'operazione e il tempo necessario per ogni passaggio. Alcune operazioni potrebbero non avere una traccia perché profiler viene eseguito periodicamente. Nel corso del tempo dovrebbero essere disponibili tracce per più operazioni. Per avviare profiler per l'operazione, selezionare Tracce profiler.

  8. La traccia mostra i singoli eventi per ogni operazione in modo da poter diagnosticare la causa radice per la durata dell'operazione complessiva. Selezionare uno degli esempi principali con la durata più lunga.

  9. Selezionare Percorso critico per evidenziare il percorso specifico degli eventi che contribuiscono maggiormente alla durata totale dell'operazione. In questo esempio è possibile notare che la chiamata più lenta proviene dal FabrikamFiberAzureStorage.GetStorageTableData metodo . La parte che richiede più tempo è il CloudTable.CreateIfNotExist metodo . Se questa riga di codice viene eseguita ogni volta che viene chiamata la funzione, verranno utilizzate chiamate di rete e risorse CPU non necessarie. Il modo migliore per correggere il codice consiste nell'inserire questa riga in un metodo di avvio che viene eseguito una sola volta.

    Screenshot che mostra i dettagli del profiler.

  10. Il suggerimento prestazioni nella parte superiore dello schermo supporta la valutazione che la durata eccessiva è dovuta all'attesa. Selezionare il collegamento in attesa per la documentazione sull'interpretazione dei diversi tipi di eventi.

    Screenshot che mostra un suggerimento per le prestazioni.

  11. Per ulteriori analisi, selezionare Scarica traccia per scaricare la traccia. È possibile visualizzare questi dati usando PerfView.

Usare i dati dei log per il server

I log offrono un linguaggio di query avanzato che è possibile usare per analizzare tutti i dati raccolti da Application Insights. È possibile usare questa funzionalità per eseguire un'analisi approfondita dei dati sulle richieste e sulle prestazioni.

  1. Tornare al pannello dei dettagli dell'operazione e selezionare Icona LogVisualizza in Log (Analisi).

  2. Viene visualizzata la schermata Log con una query per ognuna delle visualizzazioni nel pannello. È possibile eseguire queste query così come sono oppure modificarle in base alle proprie esigenze. La prima query mostra la durata per questa operazione nel corso del tempo.

    Screenshot che mostra una query di log.

Identificare le operazioni del client con maggiori rallentamenti

Oltre a identificare i processi server da ottimizzare, Application Insights è in grado di analizzare il punto di vista dei browser client. Queste informazioni consentono di identificare i potenziali miglioramenti ai componenti client e di identificare anche i problemi con browser diversi o posizioni diverse.

  1. Selezionare Browser in Ricerca e quindi selezionare Prestazioni browser. In alternativa, selezionare Prestazioni in Ricerca e passare alla scheda Browser selezionando l'interruttore Server/Browser nell'angolo in alto a destra per aprire il riepilogo delle prestazioni del browser. Questa visualizzazione fornisce un riepilogo visivo di vari telemetri dell'applicazione dal punto di vista del browser.

    Screenshot che mostra il riepilogo del browser.

  2. Selezionare uno dei nomi delle operazioni, selezionare il pulsante Esempi in basso a destra e quindi selezionare un'operazione. I dettagli delle transazioni end-to-end si aprono sul lato destro in cui è possibile visualizzare le proprietà della visualizzazione pagina. È possibile visualizzare i dettagli del client che richiede la pagina, incluso il tipo di browser e la relativa posizione. Queste informazioni possono risultare utili per determinare la presenza di problemi di prestazioni correlati a specifici tipi di client.

    Screenshot che mostra le proprietà della visualizzazione pagina.

Usare i dati dei log per il client

Analogamente ai dati raccolti per le prestazioni del server, Application Insights rende disponibili tutti i dati client per l'analisi approfondita usando i log.

  1. Tornare al riepilogo del browser e selezionare Icona Log Visualizza in Log (Analisi).

  2. Viene visualizzata la schermata Log con una query per ognuna delle visualizzazioni nel pannello. La prima query mostra la durata per le diverse visualizzazioni pagina nel corso del tempo.

    Screenshot che mostra la schermata Log.