Profilare le app Web di Azure attive con Application InsightsProfile live Azure web apps with Application Insights

Questa funzionalità di Application Insights è disponibile a livello generale per Servizio app di Azure e in anteprima per le risorse di calcolo di Azure.This feature of Application Insights is generally available for Azure App Service and is in preview for Azure compute resources.

Per determinare il tempo impiegato in ogni metodo nell'applicazione Web attiva, usare Application Insights Profiler.Find out how much time is spent in each method in your live web application by using Application Insights Profiler. Lo strumento di profilatura Application Insights consente di visualizzare profili dettagliati delle richieste attive che sono state servite dall'app ed evidenzia il percorso critico che usa più tempo.The Application Insights profiling tool shows detailed profiles of live requests that were served by your app, and highlights the hot path that uses the most time. Il profiler seleziona automaticamente esempi con tempi di risposta diversi, quindi usa varie tecniche per ridurre al minimo il sovraccarico.The profiler automatically selects examples that have different response times, and then uses various techniques to minimize overhead.

Il profiler è valido attualmente solo per le app Web ASP.NET in esecuzione in Servizio app di Azure, almeno nel livello di servizio Basic.The profiler currently works for ASP.NET web apps running on Azure App Service, in at least the Basic service tier.

Abilitare il profilerEnable the profiler

Installare Application Insights nel codice.Install Application Insights in your code. Se è già installato, assicurarsi che la versione in uso sia la più recente.If it's already installed, make sure you have the latest version. Per controllare la versione più recente, in Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet > Aggiornamenti > Aggiorna tutti i pacchetti.To check for the latest version, in Solution Explorer, right-click your project, and then select Manage NuGet packages > Updates > Update all packages. Ridistribuire l'app.Then, redeploy your app.

Uso di ASP.NET Core - Altre informazioniUsing ASP.NET Core? Get more information.

Nel portale di Azure aprire la risorsa Application Insights per l'app Web.In the Azure portal, open the Application Insights resource for your web app. Selezionare Prestazioni > Abilita Application Insights Profiler.Select Performance > Enable Application Insights Profiler.

Selezionare il banner Abilita profiler

In alternativa, è possibile selezionare Configura per visualizzare lo stato e abilitare o disabilitare il profiler.Alternatively, you can select Configure to view status and enable or disable the profiler.

In Prestazioni selezionare Configura

Le app Web configurate con Application Insights sono elencate in Configura.Web apps that are configured with Application Insights are listed under Configure. Seguire le istruzioni per installare l'agente profiler, se necessario.Follow instructions to install the profiler agent, if needed. Se nessuna app Web è stata ancora configurata con Application Insights, selezionare Aggiungi app collegate.If no web apps have been configured with Application Insights, select Add Linked Apps.

Per controllare il profiler in tutte le app Web collegate, nel riquadro Configura selezionare Abilita profiler o Disabilita profiler.To control the profiler on all your linked web apps, in the Configure pane, select Enable Profiler or Disable Profiler.

Opzioni del riquadro Configura

A differenza delle app Web ospitate attraverso i piani di servizio app, le applicazioni ospitate nelle risorse di calcolo di Azure (ad esempio, Macchine virtuali di Azure, set di scalabilità di macchine virtuali, Azure Service Fabric o Servizi cloud di Azure) non sono gestite direttamente da Azure.Unlike web apps that are hosted through App Service plans, applications that are hosted in Azure compute resources (for example, Azure Virtual Machines, virtual machine scale sets, Azure Service Fabric, or Azure Cloud Services) are not directly managed by Azure. In questo caso non sono disponibili app Web a cui collegarsi.In this case, there's no web app to link to. Anziché eseguire il collegamento a un'app, selezionare il pulsante Abilita profiler.Instead of linking to an app, select the Enable Profiler button.

Disabilitare ProfilerDisable the profiler

Per arrestare o riavviare il profiler per una singola istanza di Servizio app, in Processi Web accedere alla risorsa di Servizio app.To stop or restart the profiler for an individual App Service instance, under Web Jobs, go to the App Service resource. Per eliminare il profiler, passare a Estensioni.To delete the profiler, go to Extensions.

Disabilitare il profiler per un processo Web

È consigliabile abilitare il profiler su tutte le app Web per individuare eventuali problemi di prestazioni il prima possibile.We recommend that you have the profiler enabled on all your web apps to discover any performance issues as early as possible.

Se si usa Distribuzione Web per distribuire le modifiche all'applicazione Web, assicurarsi di escludere la cartella App_Data dall'eliminazione durante la distribuzione.If you use WebDeploy to deploy changes to your web application, ensure that you exclude the App_Data folder from being deleted during deployment. In caso contrario, verranno eliminati i file dell'estensione profiler alla successiva distribuzione dell'applicazione Web in Azure.Otherwise, the profiler extension's files are deleted the next time you deploy the web application to Azure.

Uso del profiler con le VM e le risorse di calcolo di Azure (anteprima)Using profiler with Azure VMs and Azure compute resources (preview)

Quando si abilita Application Insights per Servizio app di Azure in fase di esecuzione, Application Insights Profiler è automaticamente disponibile.When you enable Application Insights for Azure App Service at runtime, Application Insights Profiler is automatically available. Se Application Insights è già abilitato per la risorsa, potrebbe essere necessario aggiornarlo alla versione più recente tramite la procedura guidata Configura.If you have already enabled Application Insights for the resource, you might need to update to the latest version by using the Configure wizard.

Sono disponibili informazioni su una versione di anteprima del profiler per le risorse di calcolo di Azure.Get information about a preview version of the profiler for Azure compute resources.

LimitazioniLimitations

La conservazione predefinita dei dati è di cinque giorni.The default data retention is five days. La quantità massima di dati inseriti al giorno è 10 GB.The maximum data ingested per day is 10 GB.

Non sono previsti costi per l'uso del servizio profiler.There are no charges for using the profiler service. Per usare il servizio profiler, l'app Web deve essere ospitata almeno al livello di base di Servizio app.To use the profiler service, your web app must be hosted in at least the Basic tier of App Service.

Overhead e algoritmo di campionamentoOverhead and sampling algorithm

Il profiler viene eseguito in modo casuale per due minuti ogni ora in ogni macchina virtuale che ospita l'applicazione con il profiler abilitato per acquisire le tracce.The profiler randomly runs two minutes every hour on each virtual machine that hosts the application that has profiler enabled for capturing traces. Quando il profiler è in esecuzione, aggiunge al server tra il 5 e il 15% di sovraccarico della CPU.When the profiler is running, it adds between 5% and 15% CPU overhead to the server. Maggiore è il numero di server disponibili per ospitare l'applicazione, minore l'impatto del profiler sulle prestazioni complessive dell'applicazione.The more servers that are available for hosting the application, the less impact the profiler has on the overall application performance. Questo è dovuto al fatto che l'algoritmo di campionamento determina l'esecuzione del profiler solo nel 5% dei server in qualsiasi momento.This is because the sampling algorithm results in the profiler running on only 5% of servers at any time. Sono disponibili più server per elaborare le richieste Web ed eseguire l'offset del sovraccarico del server causato dall'esecuzione del profiler.More servers are available to serve web requests to offset the server overhead caused by running the profiler.

Visualizzare i dati del profilerView profiler data

Passare al riquadro Prestazioni e quindi scorrere fino all'elenco delle operazioni.Go to the Performance pane, and then scroll down to the list of operations.

Colonna di esempi del riquadro delle prestazioni di Application Insights

La tabella delle operazioni contiene queste colonne:The operations table has these columns:

  • CONTEGGIO: il numero di queste richieste nell'intervallo di tempo del riquadro CONTEGGIO.COUNT: The number of these requests in the time range of the COUNT pane.
  • MEDIANA: il tempo tipico che l'app impiega per rispondere a una richiesta.MEDIAN: The typical time your app takes to respond to a request. La metà di tutte le risposte è più veloce rispetto a questo valore.Half of all responses were faster than this value.
  • 95° PERCENTILE: il 95% delle risposte ha una velocità superiore rispetto a questo valore.95TH PERCENTILE: 95% of responses were faster than this value. Se questo valore è molto diverso da quello mediano, potrebbe essersi verificato un problema intermittente con l'app.If this value is substantially different from the median, there might be an intermittent problem with your app. In alternativa la causa potrebbe essere una funzione di progettazione, ad esempio la memorizzazione nella cache.(Or, it might be explained by a design feature, like caching.)
  • TRACCE PROFILER: un'icona indica che il profiler ha acquisito le analisi dello stack per questa operazione.PROFILER TRACES: An icon indicates that the profiler has captured stack traces for this operation.

Selezionare Visualizza per aprire l'Explorer di analisi,Select View to open the trace explorer. che mostra alcuni esempi acquisiti dal profiler, classificati in base al tempo di risposta.The explorer shows several samples that the profiler has captured, classified by response time.

Se si usa il riquadro Preview Performance (Anteprima prestazioni), passare alla sezione Take Actions (Esegui azioni) della pagina per visualizzare le tracce del profiler.If you are using the Preview Performance pane, go to the Take Actions section of the page to view profiler traces. Selezionare il pulsante Tracce Profiler.Select the Profiler Traces button.

Riquadro di anteprima delle prestazioni per Tracce Profiler in Application Insights

Selezionare un esempio per mostrare i dettagli a livello di codice del tempo impiegato per l'esecuzione della richiesta.Select a sample to show a code-level breakdown of time spent executing the request.

Explorer di analisi Application Insights

Explorer di analisi visualizza le informazioni seguenti:The trace explorer shows the following information:

  • Mostra percorso critico: apre il nodo foglia di dimensioni maggiori o almeno un elemento simile.Show Hot Path: Opens the biggest leaf node, or at least something close. Nella maggior parte dei casi questo nodo è adiacente a un collo di bottiglia delle prestazioni.In most cases, this node is adjacent to a performance bottleneck.
  • Etichetta: nome della funzione o dell'evento.Label: The name of the function or event. La struttura mostra una combinazione di codice e di eventi verificatisi, ad esempio eventi SQL e HTTP.The tree shows a mix of code and events that occurred (like SQL and HTTP events). L'evento principale rappresenta la durata complessiva della richiesta.The top event represents the overall request duration.
  • Tempo trascorso: l'intervallo di tempo tra l'inizio e la fine dell'operazione.Elapsed: The time interval between the start of the operation and the end of the operation.
  • Quando: indica quando la funzione o l'evento è stato eseguito in relazione ad altre funzioni.When: When the function or event was running in relation to other functions.

Procedura: leggere i dati sulle prestazioniHow to read performance data

Il profiler del servizio Microsoft usa una combinazione della strumentazione e dei metodi di campionamento per analizzare le prestazioni dell'applicazione.The Microsoft service profiler uses a combination of sampling methods and instrumentation to analyze the performance of your application. Quando la raccolta dettagliata è in corso, il profiler del servizio campiona il puntatore all'istruzione di ciascuna delle CPU del computer ogni millisecondo.When detailed collection is in progress, the service profiler samples the instruction pointer of each of the machine's CPU in every millisecond. Ogni esempio acquisisce lo stack di chiamate completo del thread attualmente in esecuzione.Each sample captures the complete call stack of the thread that currently is executing. Fornisce informazioni utili e dettagliate sull'attività del thread a un livello generale e specifico di astrazione.It gives detailed and useful information about what that thread was doing, both at a high level and at a low level of abstraction. Il profiler del servizio raccoglie anche altri eventi per tenere traccia della causalità e della correlazione delle attività, ad esempio gli eventi di commutazione di contesto, Task Parallel Library (TPL) e del pool di thread.The service profiler also collects other events to track activity correlation and causality, including context switching events, Task Parallel Library (TPL) events, and thread pool events.

Lo stack di chiamate mostrato nella visualizzazione della sequenza temporale è il risultato del campionamento e della strumentazione.The call stack that's shown in the timeline view is the result of the sampling and instrumentation. Poiché ogni esempio acquisisce lo stack di chiamate completo del thread, include il codice di Microsoft .NET Framework, nonché di altri framework a cui si fa riferimento.Because each sample captures the complete call stack of the thread, it includes code from the Microsoft .NET Framework, and from other frameworks that you reference.

Allocazione di oggetti (clr!JIT_New o clr!JIT_Newarr1)Object allocation (clr!JIT_New or clr!JIT_Newarr1)

clr!JIT_New e clr!JIT_Newarr1 sono funzioni di supporto in .NET Framework che allocano la memoria da un heap gestito.clr!JIT_New and clr!JIT_Newarr1 are helper functions in the .NET Framework that allocate memory from a managed heap. clr!JIT_New viene richiamato quando si alloca un oggetto.clr!JIT_New is invoked when an object is allocated. clr!JIT_Newarr1 viene richiamato quando si alloca una matrice di oggetti.clr!JIT_Newarr1 is invoked when an object array is allocated. Queste due funzioni sono in genere molto veloci e richiedono un intervallo temporale relativamente ridotto.These two functions typically are very fast, and take relatively small amounts of time. Se clr!JIT_New o clr!JIT_Newarr1 impiega una notevole quantità di tempo nella sequenza temporale, è possibile che il codice stia allocando numerosi oggetti e usando una quantità notevole di memoria.If you see clr!JIT_New or clr!JIT_Newarr1 take a substantial amount of time in your timeline, it's an indication that the code might be allocating many objects and consuming significant amounts of memory.

Caricamento di codice (clr!ThePreStub)Loading code (clr!ThePreStub)

clr!ThePreStub è una funzione di supporto all'interno di .NET Framework che prepara il codice da eseguire per la prima volta.clr!ThePreStub is a helper function in the .NET Framework that prepares the code to execute for the first time. Include ad esempio la compilazione JIT.This typically includes, but is not limited to, just-in-time (JIT) compilation. Per ogni metodo C#, clr!ThePreStub deve essere richiamato al massimo una volta nel corso della durata di un processo.For each C# method, clr!ThePreStub should be invoked at most once during the lifetime of a process.

Se clr!ThePreStub richiede una notevole quantità di tempo per una richiesta, indica che la richiesta è la prima a eseguire questo metodo.If clr!ThePreStub takes a substantial amount of time for a request, this indicates that the request is the first one that executes that method. Il tempo di caricamento del metodo da parte del runtime di .NET Framework è significativo.The time for the .NET Framework runtime to load that method is significant. È possibile valutare un processo di riscaldamento che esegua tale parte del codice prima che gli utenti accedano a esso oppure l'esecuzione del generatore di immagini native (ngen.exe) negli assembly.You might consider using a warmup process that executes that portion of the code before your users access it, or consider running Native Image Generator (ngen.exe) on your assemblies.

Conflitto di blocchi (clr!JITutil_MonContention o clr!JITutil_MonEnterWorker)Lock contention (clr!JITutil_MonContention or clr!JITutil_MonEnterWorker)

clr!JITutil_MonContention o clr!JITutil_MonEnterWorker indica che il thread corrente è in attesa di un blocco da rilasciare.clr!JITutil_MonContention or clr!JITutil_MonEnterWorker indicates that the current thread is waiting for a lock to be released. In genere viene visualizzato durante l'esecuzione di un'istruzione LOCK C#, richiamando il metodo Monitor.Enter o richiamando un metodo con l'attributo MethodImplOptions.Synchronized.This typically shows up when executing a C# LOCK statement, when invoking the Monitor.Enter method, or when invoking a method with the MethodImplOptions.Synchronized attribute. Il conflitto di blocchi si verifica in genere quando il thread A acquisisce un blocco e il thread B tenta di acquisire lo stesso blocco prima che il thread A lo rilasci.Lock contention typically occurs when thread A acquires a lock, and thread B tries to acquire the same lock before thread A releases it.

Caricamento di codice ([COLD])Loading code ([COLD])

Se il nome del metodo contiene [COLD], ad esempio mscorlib.ni![COLD]System.Reflection.CustomAttribute.IsDefined, il runtime di .NET Framework esegue per la prima volta il codice non ottimizzato dall'ottimizzazione PGO.If the method name contains [COLD], such as mscorlib.ni![COLD]System.Reflection.CustomAttribute.IsDefined, the .NET Framework runtime is executing code for the first time that is not optimized by profile-guided optimization. Per ogni metodo verrà visualizzato al massimo una volta nel corso del processo.For each method, it should show up at most once during the lifetime of the process.

Un tempo sostanziale di caricamento del codice per una richiesta indica che si tratta della prima richiesta che esegue la parte non ottimizzata del metodo.If loading code takes a substantial amount of time for a request, this indicates that the request is the first one to execute the unoptimized portion of the method. Considerare un processo di riscaldamento che esegua tale parte del codice prima che gli utenti accedano a esso.Consider using a warmup process that executes that portion of the code before your users access it.

Inviare una richiesta HTTPSend HTTP request

Metodi come HttpClient.Send indicano che il codice è in attesa del completamento di una richiesta HTTP.Methods like HttpClient.Send indicate that the code is waiting for an HTTP request to be completed.

Operazione di databaseDatabase operation

Metodi come SqlCommand.Execute indicano che il codice è in attesa del completamento di un'operazione di database.Methods like SqlCommand.Execute indicate that the code is waiting for a database operation to finish.

Attesa (AWAIT_TIME)Waiting (AWAIT_TIME)

AWAIT_TIME indica che il codice è in attesa del completamento di un'altra attività.AWAIT_TIME indicates that the code is waiting for another task to finish. Questo accade solitamente con l'istruzione C# AWAIT.This typically happens with the C# AWAIT statement. Quando il codice esegue C# AWAIT, il thread viene rimosso e restituisce il controllo al pool di thread e non esiste un thread bloccato in attesa del completamento di AWAIT.When the code does a C# AWAIT, the thread unwinds and returns control to the thread pool, and there is no thread that is blocked waiting for the AWAIT to finish. Tuttavia, in modo logico il thread che ha eseguito AWAIT viene "bloccato" in attesa che venga completata l'operazione.However, logically, the thread that did the AWAIT is "blocked," and is waiting for the operation to finish. L'istruzione AWAIT_TIME indica il tempo di blocco in attesa del completamento dell'attività.The AWAIT_TIME statement indicates the blocked time waiting for the task to finish.

Tempo di bloccoBlocked time

BLOCKED_TIME indica che il codice è in attesa di un'altra risorsa disponibile.BLOCKED_TIME indicates that the code is waiting for another resource to be available. Ad esempio, potrebbe essere in attesa di un oggetto di sincronizzazione, di un thread o del completamento di una richiesta.For example, it might be waiting for a synchronization object, for a thread to be available, or for a request to finish.

Tempo di CPUCPU time

La CPU è occupata nell'esecuzione di istruzioni.The CPU is busy executing the instructions.

Tempo del discoDisk time

L'applicazione sta eseguendo operazioni su disco.The application is performing disk operations.

Tempo di reteNetwork time

L'applicazione sta eseguendo operazioni sulla rete.The application is performing network operations.

Colonna QuandoWhen column

La colonna Quando è una visualizzazione della variazione nel tempo degli esempi INCLUSIVI raccolti per un nodo nel tempo.The When column is a visualization of how the INCLUSIVE samples collected for a node vary over time. L'intervallo totale della richiesta è suddiviso in 32 intervalli di tempo.The total range of the request is divided into 32 time buckets. Gli esempi inclusivi di tale nodo vengono accumulati in questi 32 intervalli.The inclusive samples for that node are accumulated in those 32 buckets. Ogni intervallo è rappresentato come una barra.Each bucket is represented as a bar. L'altezza della barra rappresenta un valore ridimensionato.The height of the bar represents a scaled value. Per i nodi contrassegnati con CPU_TIME o BLOCKED_TIME oppure in cui è presente una relazione ovvia di uso di una risorsa (CPU, disco, thread), la barra rappresenta l'uso di una di queste risorse per il periodo di tempo di questo intervallo.For nodes marked CPU_TIME or BLOCKED_TIME, or where there is an obvious relationship of consuming a resource (CPU, disk, thread), the bar represents consuming one of those resources for the period of time of that bucket. Per queste metriche è possibile ottenere un valore maggiore del 100% usando più risorse.For these metrics, it's possible to get a value of greater than 100% by consuming multiple resources. Ad esempio, se in media si usano due CPU in un intervallo si ottiene il 200%.For example, if on average you use two CPUs during an interval, you get 200%.

Risoluzione dei problemiTroubleshooting

Troppe sessioni di profilatura attiveToo many active profiling sessions

È attualmente possibile abilitare il profiler su un massimo di quattro app Web di Azure e di slot di distribuzione in esecuzione nello stesso piano di servizio.Currently, you can enable profiler on a maximum of four Azure web apps and deployment slots that are running in the same service plan. Se il processo Web del profiler segnala un numero eccessivo di sessioni di profilatura attive, spostare alcune app Web in un piano di servizio diverso.If the profiler web job is reporting too many active profiling sessions, move some web apps to a different service plan.

Come è possibile verificare se il Application Insights Profiler è in esecuzione?How do I determine whether Application Insights Profiler is running?

Il profiler viene eseguito come processo Web continuo nell'app Web.The profiler runs as a continuous web job in the web app. È possibile aprire la risorsa dell'app Web nel portale di Azure.You can open the web app resource in the Azure portal. Nel riquadro WebJobs controllare lo stato di ApplicationInsightsProfiler.In the WebJobs pane, check the status of ApplicationInsightsProfiler. Se non è in esecuzione, aprire Log per altre informazioni.If it isn't running, open Logs to get more information.

Perché non è possibile trovare esempi di stack anche se il profiler è in esecuzione?Why can't I find any stack examples, even though the profiler is running?

Ecco alcuni aspetti da controllare:Here are a few things that you can check:

  • Assicurarsi che il piano di servizio dell'app Web sia di livello Basic o superiore.Make sure that your web app service plan is Basic tier or above.
  • Assicurarsi che nell'app Web sia abilitato Application Insights SDK 2.2 Beta o versioni successive.Make sure that your web app has Application Insights SDK 2.2 Beta or later enabled.
  • Assicurarsi che nell'app Web l'impostazione APPINSIGHTS_INSTRUMENTATIONKEY abbia la stessa chiave di strumentazione usata da Application Insights SDK.Make sure that your web app has the APPINSIGHTS_INSTRUMENTATIONKEY setting configured with the same instrumentation key that's used by the Application Insights SDK.
  • Assicurarsi che l'app Web sia in esecuzione su .NET Framework 4.6.Make sure that your web app is running on .NET Framework 4.6.
  • Se l'app Web è un'applicazione ASP.NET Core, verificare le dipendenze richieste.If your web app is an ASP.NET Core application, check the required dependencies.

Dopo aver avviato il profiler, sarà previsto un breve periodo di riscaldamento durante il quale il profiler raccoglierà attivamente diverse analisi di prestazioni.After the profiler is started, there is a short warmup period during which the profiler actively collects several performance traces. Successivamente, il profiler raccoglie le analisi di prestazioni per due minuti ogni ora.After that, the profiler collects performance traces for two minutes in every hour.

Stavo usando il profiler del servizio Azure.I was using Azure Service Profiler. Che cosa è successo?What happened to it?

Quando si abilita Application Insights Profiler, l'agente del profiler di servizi Azure viene disabilitato.When you enable Application Insights Profiler, the Azure Service Profiler agent is disabled.

Doppio conteggio dei thread in paralleloDouble counting in parallel threads

In alcuni casi la metrica del tempo totale nel visualizzatore dello stack supera la durata della richiesta.In some cases, the total time metric in the stack viewer is more than the duration of the request.

Questa situazione può verificarsi quando sono presenti due o più thread associati a una richiesta, che operano in parallelo.This might occur when there are two or more threads associated with a request, and they are operating in parallel. In questo caso, il tempo totale di thread è superiore al tempo trascorso.In that case, the total thread time is more than the elapsed time. Un thread può essere in attesa del completamento dell'altro.One thread might be waiting on the other to be completed. Il visualizzatore tenta di rilevare questa situazione e omette l'attesa non interessante, ma sbaglia mostrando l'eccesso anziché l'omissione di quelle che possono essere informazioni critiche.The viewer tries to detect this and omits the uninteresting wait, but it errs on the side of showing too much rather than omitting what might be critical information.

Quando sono presenti thread in parallelo nelle analisi, determinare quali thread sono in attesa in modo da poter determinare il percorso critico per la richiesta.When you see parallel threads in your traces, determine which threads are waiting so you can determine the critical path for the request. Nella maggior parte dei casi, il thread che entra rapidamente in uno stato di attesa è semplicemente in attesa di altri thread.In most cases, the thread that quickly goes into a wait state is simply waiting on the other threads. Concentrarsi sugli altri thread e ignorare il tempo nei thread in attesa.Concentrate on the other threads and ignore the time in the waiting threads.

Senza dati di profilaturaNo profiling data

Ecco alcuni aspetti da controllare:Here are a few things that you can check:

  • Se i dati che si sta tentando di visualizzare sono antecedenti a un paio di settimane, è possibile limitare il filtro temporale e riprovare.If the data you are trying to view is older than a couple of weeks, try limiting your time filter and try again.
  • Verificare che un firewall o i proxy non abbiano bloccato l'accesso a https://gateway.azureserviceprofiler.net.Check that proxies or a firewall have not blocked access to https://gateway.azureserviceprofiler.net.
  • Verificare che la chiave di strumentazione di Application Insights in uso nell'app sia la stessa della risorsa di Application Insights usata per abilitare la profilatura.Check that the Application Insights instrumentation key you are using in your app is the same as the Application Insights resource that you used to enabled profiling. La chiave è in genere in ApplicationInsights.config, ma potrebbe anche essere disponibile nei file web.config o app.config.The key usually is in ApplicationInsights.config, but also might be located in the web.config or app.config files.

Report di errori nel visualizzatore di profilaturaError report in the profiling viewer

Inviare un ticket di supporto nel portale.Submit a support ticket in the portal. Verificare di includere l'ID di correlazione dal messaggio di errore.Be sure to include the correlation ID from the error message.

Errore di distribuzione: Directory non vuota 'D:\home\site\wwwroot\App_Data\jobs'Deployment error: Directory Not Empty 'D:\home\site\wwwroot\App_Data\jobs'

Se si intende ridistribuire l'app Web in una risorsa di Servizio app con il profiler abilitato, potrebbe essere visualizzato un messaggio simile al seguente:If you are redeploying your web app to an App Service resource with the profiler enabled, you might see a message that looks like the following:

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

Questo errore si verifica se si esegue Distribuzione Web da script o dalla pipeline di distribuzione di Visual Studio Team Services.This error occurs if you run Web Deploy from scripts or from Visual Studio Team Services Deployment Pipeline. Per risolvere questo problema, aggiungere i parametri di distribuzione seguenti all'attività Distribuzione Web:The solution is to add the following additional deployment parameters to the Web Deploy task:

-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 e sbloccano il processo di ridistribuzione.These parameters delete the folder that's used by Application Insights Profiler and unblock the redeploy process. Non influiscono sull'istanza del profiler attualmente in esecuzione.They don't affect the profiler instance that's currently running.

Installazione manualeManual installation

Quando si configura il profiler, vengono eseguiti aggiornamenti nelle impostazioni dell'app Web.When you configure the profiler, updates are made to the web app's settings. È possibile applicare gli aggiornamenti manualmente, se l'ambiente lo richiedeYou can apply the updates manually if your environment requires it. (ad esempio, se l'applicazione viene eseguita nell'ambiente di Servizio app per PowerApps).For example, if your application runs in App Service Environment for PowerApps.

  1. Nel pannello di controllo dell'app Web aprire Impostazioni.In the web app control pane, open Settings.
  2. Impostare la versione di .NET Framework su v4.6.Set .Net Framework version to v4.6.
  3. Attivare Always On.Set Always On to On.
  4. Aggiungere l'impostazione dell'app APPINSIGHTS_INSTRUMENTATIONKEY e impostare il valore sulla stessa chiave di strumentazione usata dall'SDK.Add the APPINSIGHTS_INSTRUMENTATIONKEY app setting and set the value to the same instrumentation key that's used by the SDK.
  5. Aprire Strumenti avanzati.Open Advanced Tools.
  6. Selezionare Vai per aprire il sito Web Kudu.Select Go to open the Kudu website.
  7. Nel sito Web Kudu selezionare Site extensions (Estensioni del sito).On the Kudu website, select Site extensions.
  8. Installare Application Insights dalla raccolta delle app Web di Azure.Install Application Insights from the Azure Web Apps Gallery.
  9. Riavviare l'app Web .Restart the web app.

Supporto di ASP.NET CoreASP.NET Core support

Un'applicazione ASP.NET Core deve installare il pacchetto NuGet Microsoft.ApplicationInsights.AspNetCore 2.1.0-beta6 o versioni successive per poter interagire con il profiler.An ASP.NET Core application needs to install the Microsoft.ApplicationInsights.AspNetCore NuGet package 2.1.0-beta6 or later to work with the profiler. A partire da 27 giugno 2017 non sono supportate le versioni precedenti.As of June 27, 2017, we don't support earlier versions.

Passaggi successiviNext steps