Condividi tramite


Monitorare e analizzare il comportamento di runtime con ottimizzazioni del codice

La diagnosi dei problemi di prestazioni dell'applicazione può essere difficile, soprattutto quando si esegue in un ambiente di produzione nel cloud dinamico. Le risposte lente nell'applicazione potrebbero essere causate dall'infrastruttura, dal framework o dal codice dell'applicazione che gestisce la richiesta nella pipeline.

Ottimizzazioni del codice, un servizio basato su intelligenza artificiale (AI) in Azure Application Insights, funziona in combinazione con Application Insights Profiler per .NET per rilevare problemi di prestazioni relativi all'uso della CPU e della memoria a livello di codice, fornendo raccomandazioni su come risolverli.

Prendere decisioni informate e ottimizzare il codice usando dati sulle prestazioni in tempo reale e informazioni dettagliate raccolte dall'ambiente di produzione.

È possibile esaminare le ottimizzazioni del codice nel portale di Azure.

Ottimizzazioni del codice e Application Insights Profiler per .NET

Il profiler .NET e le ottimizzazioni del codice interagiscono per fornire un approccio olistico al rilevamento dei problemi di prestazioni.

Ottimizzazioni del codice

Le ottimizzazioni del codice identificano, analizzano e risolvono i dati di profilatura raccolti dal profiler di Application Insights per .NET. Quando .NET Profiler carica i dati in Application Insights, il modello di Machine Learning analizza alcuni dei dati per trovare dove è possibile ottimizzare il codice dell'applicazione. Ottimizzazioni del codice:

  • Visualizza i dati aggregati raccolti nel tempo.
  • Connette i dati con i metodi e le funzioni nel codice dell'applicazione.
  • Risale al colpevole identificando colli di bottiglia all'interno del codice.
  • Fornisce correzioni delle prestazioni a livello di codice basate su informazioni dettagliate.

Identifica

Usando la pagina di panoramica consolidata ottimizzazioni del codice, è possibile visualizzare tutte le raccomandazioni di ottimizzazione del codice nelle sottoscrizioni di Azure e nelle risorse di Application Insights nel portale di Azure. Identificare i colli di bottiglia nel codice e rivedere le raccomandazioni a livello di codice per gli ambienti di sviluppo, test, pre-produzione e produzione.

Analizza

Dopo aver raccolto i dati dell'ambiente, Le ottimizzazioni del codice forniscono raccomandazioni a livello di codice su base oraria. Per impostazione predefinita, la visualizzazione dei dati aggregati mostra una finestra di 24 ore in sequenza dei problemi identificati di recente, con una cronologia di 30 giorni per esaminare e analizzare gli eventi passati.

Risolvi

Dopo aver identificato e analizzato i risultati dell'ottimizzazione del codice, è possibile risolvere questi problemi nel codice usando le estensioni Ottimizzazione codice di Visual Studio e Visual Studio Code . Con queste estensioni, interagire con GitHub Copilot per ricevere una correzione del codice basata sulle informazioni dettagliate sulle ottimizzazioni del codice.

Video dimostrativo

Application Insights Profiler per .NET

.NET Profiler è incentrato sulla traccia di richieste specifiche, fino al millisecondo. Offre un'eccellente visualizzazione dei problemi all'interno dell'applicazione e delle procedure consigliate generali per risolverli.

Con Application Insights Profiler per .NET è possibile acquisire, identificare e visualizzare le tracce delle prestazioni per l'applicazione in esecuzione in Azure, indipendentemente dallo scenario. Il processo di traccia di .NET Profiler viene eseguito automaticamente, su larga scala e non influisce negativamente sugli utenti. Il profiler .NET identifica:

  • I tempi di risposta medi, più veloci e più lenti per ogni richiesta Web effettuata dai tuoi clienti.
  • Il percorso di codice "critico" che impiega più tempo per gestire una determinata richiesta Web.

Abilitare Profiler per .NET in tutte le applicazioni Azure per raccogliere dati con i trigger seguenti:

  • Trigger di campionamento: avvia Profiler in modo casuale circa una volta all'ora per due minuti.
  • Trigger CPU: avvia Profiler quando la percentuale di utilizzo della CPU è superiore all'80%.
  • Trigger di memoria: avvia Profiler quando l'utilizzo della memoria supera l'80%.

Ognuno di questi trigger può essere configurato, abilitato o disabilitato.

Costi e costi generali

Le ottimizzazioni del codice vengono generate automaticamente dopo l'abilitazione di Application Insights Profiler per .NET. Per impostazione predefinita, Profiler raccoglie attivamente le tracce ogni ora per 30 secondi o durante periodi di utilizzo elevato della CPU o della memoria per 30 secondi. Le tracce orarie (denominate campionamento) sono ideali per l'ottimizzazione proattiva, mentre le tracce di memoria e CPU elevate (denominate trigger) sono utili per la risoluzione dei problemi reattiva.

Annotazioni

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.

Alcune funzionalità di ottimizzazione del codice ( ad esempio i suggerimenti di correzione a livello di codice) richiedono Copilot per GitHub e/o Copilot per Azure.

Abilitazione di .NET Profiler

Man mano che i framework e i servizi di Azure si evolvono, è possibile abilitare .NET Profiler per le app .NET in esecuzione in Azure tramite diverse opzioni.

Servizio di Azure Come abilitare Dettagli
La maggior parte dei servizi di Azure Modifica del codice nell'applicazione
(la maggior parte universale)
Se l'app .NET viene eseguita in varianti di servizi o contenitori PaaS di Azure, è possibile scegliere tra due opzioni per abilitare .NET Profiler:
- Application Insights Profiler per ASP.NET Core che usa Application Insights SDK o
- NuovoProfiler OpenTelemetry di Monitoraggio di Azure per NET (anteprima) che usa Distro OpenTelemetry di Monitoraggio di Azure
Servizio app di Azure Nessuna modifica del codice per l'applicazione Poiché Profiler è preinstallato, è possibile abilitare Profiler per .NET nel portale per:
- Servizio App di Azure - App .NET su Windows
- Funzioni di Azure - Piano di servizio app
Macchine virtuali Nessuna modifica del codice per l'applicazione Dopo aver abilitato l'SDK di Application Insights nel codice dell'applicazione, è possibile abilitare il Profiler per .NET nel modello ARM.
- Macchine virtuali di Azure e set di scalabilità di macchine virtuali per Windows
- Azure Service Fabric

Dettagli ed esempi per l'abilitazione di Profiler per .NET

Annotazioni

È anche possibile usare il Profiler Java per Azure Monitor Application Insights, attualmente in anteprima.

Regioni supportate

Le ottimizzazioni del codice sono disponibili nelle stesse aree di Application Insights. È possibile controllare le aree disponibili usando il comando seguente:

az account list-locations -o table

È possibile impostare un'area esplicita usando le stringhe di connessione. Altre informazioni sulle stringhe di connessione con esempi.

Limitazioni

Profilazione delle applicazioni web

  • Anche se è possibile usare .NET Profiler senza costi aggiuntivi, l'app Web deve essere ospitata nel livello di base della funzionalità di App Web del servizio app Azure, almeno.
  • È possibile collegare un solo profiler a ogni app Web.

Risoluzione dei problemi

Passaggi successivi

Informazioni su come abilitare .NET Profiler con ottimizzazioni del codice nel servizio di Azure: