Condividi tramite


Risolvere i problemi di Application Insights Profiler per .NET

Questo articolo presenta i passaggi e le informazioni per la risoluzione dei problemi per consentire l'uso di Application Insights Profiler per .NET.

Si usa l'endpoint .NET Profiler appropriato?

Attualmente, le uniche aree che richiedono la modifica degli endpoint sono Azure per enti pubblici e Microsoft Azure gestito da 21Vianet.

Impostazione app Cloud di enti pubblici USA Cloud per la Cina
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

È in esecuzione la versione corretta dell'app?

Il profiler è supportato in .NET Framework successiva alla versione 4.6.2.

Se l'app Web è un'applicazione ASP.NET Core, deve essere in esecuzione il runtime di ASP.NET Core più recente.

Si usa il piano di servizio di Azure corretto?

Profiler per .NET non è attualmente supportato nei piani di servizio app gratuiti o condivisi. Per garantire il corretto funzionamento di Profiler, eseguire l'aggiornamento a uno dei piani di base.

Nota

Il piano A consumo di Funzioni di Azure non è supportato. Vedere Profilatura dell'app Funzioni di Azure in tempo reale con Application Insights.

Si stanno cercando dati di Profiler .NET entro l'intervallo di tempo corretto?

Se i dati che si sta tentando di visualizzare sono antecedenti a due settimane, limitare il filtro temporale e riprovare. Le tracce vengono eliminate dopo sette giorni.

Si è a conoscenza della frequenza di campionamento e del sovraccarico del profiler .NET?

.NET Profiler esegue in modo casuale due minuti all'ora in ogni macchina virtuale che ospita applicazioni con Profiler abilitato.

Nota

Quando Application Insights Profiler per .NET è in esecuzione e raccoglie attivamente tracce, in genere aggiunge tra il 5% e il 15% del sovraccarico di CPU e memoria al server.

Non sono previsti costi aggiuntivi per l'archiviazione dei dati acquisiti da .NET Profiler. I dati vengono eliminati automaticamente dopo 15 giorni.

È possibile accedere al gateway?

Verificare che un firewall o i proxy non blocchino l'accesso a questa pagina Web.

Vengono visualizzati timeout o è necessario verificare se il profiler .NET è in esecuzione?

I dati di profilatura vengono caricati solo quando possono essere collegati a una richiesta avvenuta durante l'esecuzione di Profiler. .NET Profiler raccoglie i dati per due minuti ogni ora. È anche possibile attivare profiler avviando una sessione di profilatura.

Profiler scrive messaggi di traccia ed eventi personalizzati nella risorsa di Application Insights. È possibile usare questi eventi per vedere come viene eseguito profiler.

Cercare messaggi di traccia ed eventi personalizzati inviati da .NET Profiler alla risorsa di Application Insights.

  1. Nella risorsa di Application Insights selezionare Cerca nel menu in alto.

    Screenshot che mostra la selezione del pulsante Cerca nella risorsa di Application Insights.

  2. Usare la stringa di ricerca seguente per trovare i dati pertinenti:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Screenshot che mostra i risultati della ricerca della stringa di ricerca indicata in precedenza.

    I risultati della ricerca precedente includono due esempi di ricerche da due risorse di intelligenza artificiale:

    • Se l'applicazione non riceve richieste durante l'esecuzione di Profiler, il messaggio spiega che il caricamento è stato annullato a causa dell'assenza di attività.

    • Profiler è stato avviato e ha inviato eventi personalizzati a seguito di richieste avvenute durante l'esecuzione. Se viene visualizzato l'evento personalizzato ServiceProfilerSample, significa che un profilo è stato acquisito ed è disponibile nel riquadro Prestazioni di Application Insights.

    Se non vengono visualizzati record, Profiler non è in esecuzione o ha impiegato troppo tempo per rispondere. Assicurarsi che Profiler sia abilitato nel servizio di Azure.

Il profiler .NET è attivo, ma non sono state acquisite tracce

Anche quando il Profiler è abilitato, potrebbe non acquisire o caricare tracce, in particolare in queste situazioni:

  1. Nessuna richiesta in ingresso all'applicazione:
    È possibile richiamare manualmente l'applicazione o creare un test di disponibilità o un test di carico.

  2. Nessun dato di telemetria in ingresso riconosciuto da Application Insights:

  3. L'impostazione del Profiler per Il campionamento è disattivata:
    Se non sono ancora disponibili tracce del Profiler, controllare l'impostazione Campionamento Profiler.

    1. Aprire il pannello Application Insights>Prestazioni.
    2. Fare clic su Profiler.
    3. Fare clic sul pulsante Trigger.
    4. In Impostazioni trigger verificare che l'interruttore Campionamento sia attivato.
  4. Nessuna traccia caricata?
    Creare una richiesta di supporto o chiedere supporto alla community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.

Doppio conteggio in thread paralleli

Quando due o più thread paralleli sono associati a una richiesta, la metrica del tempo totale nel visualizzatore dello stack potrebbe essere superiore alla durata della richiesta. In questo caso, il tempo totale di thread è superiore al tempo trascorso effettivo.

Ad esempio, è possibile che un thread sia in attesa del completamento dell'altro. Il visualizzatore prova a rilevare questa situazione e omette l'attesa non interessante. Ciò facendo, sbaglia visualizzando troppe informazioni anziché omettendo informazioni potenzialmente critiche.

Quando nelle analisi sono presenti thread in parallelo, individuare i thread in attesa in modo da identificare il percorso critico della richiesta. Un thread che passa rapidamente in uno stato di attesa è in genere in attesa di altri thread. Concentrarsi sugli altri thread e ignorare il tempo nei thread in attesa.

Risolvere i problemi di .NET Profiler nel servizio di Azure specifico

Le sezioni seguenti descrivono i passaggi per la risoluzione dei problemi relativi all'uso di Profiler nel Servizio app di Azure o in Servizi cloud di Azure.

Servizio app di Azure

Per il corretto funzionamento di .NET Profiler, assicurarsi di:

  • L'app Web abbia Application Insights abilitato con le impostazioni corrette.

  • Il processo Web ApplicationInsightsProfiler3 sia in esecuzione. Per controllare il processo Web:

    1. Passare a Kudu. Nel portale di Azure:

      1. Nell'istanza del Servizio app di Azure selezionare Strumenti avanzati nel riquadro a sinistra.
      2. Selezionare Vai.
    2. Nel menu in alto selezionare Strumenti>Dashboard di WebJobs. Verrà visualizzato il riquadro WebJobs (Processi Web).

      Se ApplicationInsightsProfiler3 non viene visualizzato, riavviare l'applicazione Servizio app di Azure.

      Screenshot che mostra il riquadro Processi Web, che mostra il nome, lo stato e l'ultimo runtime dei processi.

    3. Per visualizzare i dettagli del processo Web, incluso il log, selezionare il collegamento ApplicationInsightsProfiler3. Verrà visualizzato il riquadro Continuous WebJob Details (Dettagli processo Web continuo).

      Screenshot che mostra il riquadro Dettagli processo Web continuo.

Se il profiler .NET non funziona ancora, scaricare il log e inviare un ticket di supporto tecnico di Azure.

Controllare la pagina relativa allo stato dell'estensione del sito dei servizi di diagnostica

Se il profiler .NET è stato abilitato tramite il riquadro Application Insights nel portale, viene gestito dall'estensione del sito di Servizi di diagnostica. È possibile controllare la pagina dello stato di questa estensione passando a https://{site-name}.scm.azurewebsites.net/DiagnosticServices.

Nota

Il dominio del collegamento alla pagina dello stato varia a seconda del cloud. Questo dominio è lo stesso del sito di gestione Kudu per il Servizio app di Azure.

La pagina relativa allo stato mostra lo stato di installazione degli agenti .NET Profiler e Snapshot Debugger . Se si è verificato un errore imprevisto, viene visualizzato insieme alla procedura per risolverlo.

È possibile usare il sito di gestione Kudu per il Servizio app di Azure per ottenere l'URL di base di questa pagina dello stato:

  1. Aprire l'applicazione del servizio app nel portale di Azure.
  2. Selezionare Strumenti avanzati.
  3. Selezionare Vai.
  4. Nel sito di gestione Kudu:
    1. Aggiungi /DiagnosticServices all'URL.
    2. Selezionare INVIO.

La parte terminale sarà simile a https://<kudu-url>/DiagnosticServices.

La pagina dello stato è simile all'esempio seguente.

Screenshot che mostra la pagina relativa allo stato dei servizi di diagnostica.

Nota

L'installazione senza codice di Application Insights Profiler per .NET segue i criteri di supporto di .NET Core. Per altre informazioni sui runtime supportati, vedere Criteri di supporto di .NET Core.

Installazione manuale

Quando si configura .NET Profiler, vengono eseguiti aggiornamenti alle impostazioni dell'app Web. Se necessario, è possibile applicare manualmente gli aggiornamenti.

Troppe sessioni di profilatura attive

Nel Servizio app di Azure è previsto un limite di una sola sessione di profilatura alla volta. Questo limite viene applicato a livello di macchina virtuale in tutte le applicazioni e gli slot di distribuzione in esecuzione in un piano di servizio app. Questo limite si applica allo stesso modo alle sessioni di profilatura avviate tramite Diagnostica e risoluzione di problemi, Kudu e Application Insights Profiler per .NET.

Se .NET Profiler tenta di avviare una sessione quando un altro è già in esecuzione, viene registrato un errore nel registro applicazioni e anche il log continuo del processo Web per ApplicationInsightsProfiler3.

Nei log potrebbe essere visualizzato uno dei messaggi seguenti:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

Il codice 0xE111005E di errore indica che non è stato possibile avviare una sessione di profilatura perché è già in esecuzione un'altra sessione.

Per evitare l'errore, spostare alcune app Web in un piano di servizio app diverso o disabilitare profiler in alcune applicazioni. Se si usano gli slot di distribuzione, assicurarsi di arrestare eventuali slot inutilizzati.

Errore di distribuzione: Directory non vuota 'D:\home\site\wwwroot\App_Data\jobs'

Se si ridistribuisce l'app Web in una risorsa App Web con .NET Profiler abilitato, è possibile che venga visualizzato il messaggio seguente:

"Directory non vuota 'D:\home\site\wwwroot\App_Data\jobs'"

Questo errore si verifica se si esegue Distribuzione Web da script o da Azure Pipelines. Risolvere il problema aggiungendo i parametri di distribuzione seguenti all'attività di Distribuzione Web:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Questi parametri eliminano la cartella usata da Application Insights Profiler per .NET e sbloccano il processo di ridistribuzione. Non influiscono sull'istanza di Profiler attualmente in esecuzione.

Application Insights Profiler è in esecuzione per .NET?

Il profiler viene eseguito come processo Web continuo nell'app Web. È possibile aprire la risorsa dell'app Web nel portale di Azure. Nel riquadro WebJobs controllare lo stato di ApplicationInsightsProfiler. Se non è in esecuzione, aprire Log per altre informazioni.

Macchine virtuali e Servizi cloud di Azure

Per verificare se il profiler .NET è configurato correttamente da Diagnostica di Azure:

  1. Verificare che il contenuto della configurazione di Diagnostica di Azure sia quello previsto.

  2. Assicurarsi che Diagnostica di Azure passi la chiave di strumentazione corretta nella riga di comando di Profiler.

  3. Controllare il file di log del Profiler per verificare se il profiler .NET è stato eseguito ma ha restituito un errore.

Per controllare le impostazioni usate per configurare Diagnostica di Azure:

  1. Accedere alla macchina virtuale.

  2. Aprire il file di log in questo percorso. La versione del plug-in potrebbe essere più recente nel computer.

    Per le macchine virtuali:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Per Servizi cloud di Azure:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. Cercare nel file la stringa WadCfg per trovare le impostazioni passate alla macchina virtuale per configurare Diagnostica di Azure.

  4. Verificare se la chiave iKey usata dal sink del profiler .NET è corretta.

  5. Controllare la riga di comando che avvia Profiler. Gli argomenti della riga di comando si trovano nel file seguente (l'unità potrebbe essere c: o d: e la directory potrebbe essere nascosta):

    Per le macchine virtuali:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Per Servizi cloud di Azure:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Assicurarsi che la chiave di strumentazione nella riga di comando di Profiler sia corretta.

  7. Usando il percorso disponibile nel file config.json precedente, controllare il file di log di Profiler, denominato BootstrapN.log. Vengono visualizzati questi dati:

    • Informazioni di debug che indicano le impostazioni usate da Profiler.
    • Messaggi di stato e di errore da Profiler.

    È possibile trovare il file:

    Per le macchine virtuali:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Per Servizi cloud di Azure:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Se il profiler .NET è in esecuzione mentre l'applicazione riceve le richieste, viene visualizzato il messaggio seguente: "Attività rilevata da iKey".

  9. Durante il caricamento dell'analisi viene visualizzato il messaggio seguente: "Avviare il caricamento dell'analisi".

Modificare le regole proxy o firewall di rete

Se l'applicazione si connette a Internet tramite un proxy o un firewall, potrebbe essere necessario aggiornare le regole per comunicare con .NET Profiler.

Gli indirizzi IP usati da Application Insights Profiler per .NET sono inclusi nel tag del servizio Monitoraggio di Azure. Per altre informazioni, vedere la documentazione relativa ai tag del servizio.

Supporto tecnico

Se è ancora necessaria assistenza, inviare un ticket di supporto nel portale di Azure. Includere l'ID di correlazione disponibile nel messaggio di errore.