Condividi tramite


Risoluzione dei problemi di rallentamento delle prestazioni delle app nel Servizio app di Azure

Questo articolo fornisce informazioni utili per la risoluzione dei rallentamenti delle prestazioni delle app nel Servizio app di Azure.

Per ulteriore assistenza in qualsiasi momento durante la lettura di questo articolo, contattare gli esperti del Supporto della Community di Azure. In alternativa, è possibile archiviare un evento imprevisto di supporto tecnico di Azure. Passare al supporto tecnico di Azure e selezionare Invia un ticket di supporto.

Sintomo

Quando si esplora l'app, le pagine si caricano lentamente e talvolta si verifica un timeout.

Causa

Spesso la causa dell'errore deriva da problemi a livello dell'applicazione, ad esempio:

  • Le richieste di rete richiedono molto tempo
  • Il codice dell'applicazione o le query di database sono inefficienti
  • Applicazione che usa memoria/CPU elevata
  • Arresto anomalo dell'applicazione a causa di un'eccezione

Passaggi per la risoluzione dei problemi

La risoluzione dei problemi prevede tre attività distinte, in ordine sequenziale:

  1. Osservare e monitorare il comportamento dell'applicazione
  2. Raccolta di dati
  3. Attenuare il problema

Il servizio app presenta diverse opzioni per ogni passaggio.

Osservare e monitorare il comportamento dell'applicazione

Tenere traccia dell'integrità del servizio

Azure pubblica ogni interruzione o riduzione delle prestazioni del servizio. È possibile tenere traccia dell'integrità del servizio nel portale di Azure. Per altre informazioni, vedere Visualizzare le notifiche sull'integrità dei servizi tramite il portale di Azure.

Monitorare l'app

È possibile usare gli strumenti di monitoraggio nel portale di Azure per scoprire se l'applicazione presenta problemi. In Monitoraggio nel menu della barra laterale selezionare Metriche. Il menu a discesa Metrica mostra tutte le metriche che è possibile aggiungere.

Alcune delle metriche che potresti voler monitorare per la tua app includono:

  • Working set della memoria medio
  • Tempo CPU
  • Working set della memoria
  • Richieste
  • Ora di risposta

Screenshot della sezione metriche in Monitoraggio.

Per altre informazioni, vedi:

Monitorare lo stato degli endpoint

Se l'app è in esecuzione nel piano tariffario Standard , il servizio app consente di monitorare due endpoint da tre posizioni geografiche.

Il monitoraggio degli endpoint configura i test Web da posizioni distribuite a livello geografico che testano il tempo di risposta e di attività degli URL Web. Il test esegue un'operazione HTTP GET sull'URL Web per determinare il tempo di risposta e il tempo di attività da ogni posizione. Ogni posizione configurata esegue un testo ogni cinque minuti.

Il tempo di attività viene monitorato mediante codici di risposta HTTP e il tempo di risposta è misurato in millisecondi. Un test di monitoraggio ha esito negativo se il codice della risposta HTTP è maggiore di o uguale a 400 o se la risposta richiede più di 30 secondi. Un endpoint è considerato disponibile se il test di monitoraggio ha esito positivo da tutte le posizioni specificate.

Per configurarla, vedere Quote e metriche del servizio app di Azure.

Monitoraggio delle prestazioni dell'applicazione tramite estensioni

È anche possibile monitorare le prestazioni dell'applicazione usando un'estensione del sito.

Ogni app del servizio app fornisce un endpoint di gestione estendibile che consente di usare un potente set di strumenti distribuiti come estensioni del sito. Le estensioni includono:

  • Editor di codice sorgente come GitHub Codespaces.
  • Strumenti di gestione per le risorse connesse, ad esempio un database MySQL connesso a un'app.

Azure Application Insights è un'altra estensione del sito disponibile per il monitoraggio delle prestazioni. Per usare Application Insights è necessario ricompilare il codice con un SDK. È anche possibile installare un'estensione che consente l'accesso a dati aggiuntivi. SDK consente di scrivere il codice per monitorare l'utilizzo e prestazioni dell'applicazione in modo più dettagliato. Per altre informazioni, vedere Introduzione ad Application Insights - Osservabilità openTelemetry.

Raccolta di dati

Il servizio app offre funzionalità diagnostiche per la registrazione di informazioni sia dal server Web sia dall'applicazione Web, separate in diagnostica del server Web e diagnostica delle applicazioni.

Abilitare la diagnostica del server Web

È possibile abilitare o disabilitare i seguenti tipi di log:

  • Registrazione dettagliata degli errori: informazioni dettagliate sugli errori per i codici di stato HTTP che indicano un errore (codice di stato 400 o superiore). Può contenere informazioni che consentono di determinare il motivo per cui il server ha restituito il codice di errore.
  • Traccia richieste non riuscite: informazioni dettagliate sulle richieste non riuscite, inclusa una traccia dei componenti IIS usati per elaborare la richiesta e il tempo impiegato in ogni componente. Ciò può essere utile se si tenta di migliorare le prestazioni dell'app o isolare ciò che causa un errore HTTP specifico.
  • Registrazione server Web: informazioni sulle transazioni HTTP tramite il formato di file di log esteso W3C. Ciò è utile nel determinare le metriche generali dell'app, ad esempio il numero delle richieste gestite oppure quante di esse provengono da uno specifico indirizzo IP.

Abilitare la diagnostica delle applicazioni

Esistono diverse opzioni per raccogliere dati sulle prestazioni dell'applicazione dal servizio app, profilare l'applicazione in tempo reale da Visual Studio oppure modificare il codice dell'applicazione per registrare altre informazioni e tracce. È possibile scegliere le opzioni in base al livello di accesso consentito all'applicazione e ai dati osservati tramite gli strumenti di monitoraggio.

Usare Application Insights Profiler

È possibile abilitare Application Insights Profiler per avviare l'acquisizione di tracce dettagliate delle prestazioni. È possibile accedere alle tracce acquisite fino a cinque giorni in passato quando è necessario analizzare i problemi. È possibile scegliere questa opzione, a condizione che sia disponibile l'accesso alla risorsa Application Insights dell'app nel portale di Azure.

Application Insights Profiler fornisce statistiche sul tempo di risposta per ogni chiamata Web e tracce che indicano quale riga di codice ha causato le risposte lente. A volte l'app del servizio app è lenta perché un determinato codice non viene scritto in modo efficiente. È possibile ad esempio che siano presenti un codice sequenziale che può essere eseguito in parallelo e conflitti di blocco di database non previsti. La rimozione di questi colli di bottiglia nel codice aumenta le prestazioni dell'app, ma è difficile rilevare senza configurare tracce e log elaborati. Le tracce raccolte da Application Insights Profiler sono utili per identificare le righe di codice che rallentano l'applicazione e consentono di risolvere questa problematica per le app del servizio app.

Per altre informazioni, vedere Abilitare .NET Profiler per le app del servizio app di Azure in Windows.

Configurare manualmente le tracce di diagnostica

Se si ha accesso al codice sorgente dell'applicazione Web, la diagnostica dell'applicazione consente di acquisire informazioni prodotte da un'applicazione Web. Le applicazioni ASP.NET possono usare la classe System.Diagnostics.Trace per registrare le informazioni nel log di diagnostica applicazioni. È tuttavia necessario modificare il codice o ridistribuire l'applicazione. Questo metodo è consigliato se l'app è in esecuzione in un ambiente di testing.

Per istruzioni dettagliate su come configurare l'applicazione per la registrazione, vedere Abilitare la registrazione diagnostica per le app nel servizio app di Azure.

Usare lo strumento di diagnostica

Il servizio app offre un'esperienza dinamica e interattiva che consente di risolvere i problemi delle app senza ricorrere ad alcun intervento di configurazione. Quando si verificano problemi con l'app, lo strumento di diagnostica indica cosa è sbagliato per guidare l'utente alle informazioni corrette per risolvere più facilmente e rapidamente il problema.

Per accedere alla diagnostica del servizio app, passare alla app del servizio app o all'ambiente del servizio app nel portale di Azure. Nel menu della barra laterale selezionare Diagnosi e risoluzione dei problemi.

Usare la console di debug Kudu

Il servizio app include una console di debug che è possibile usare per il debug, l'esplorazione e il caricamento di file, nonché endpoint JSON per ottenere informazioni sull'ambiente in uso. Questa console è chiamata console Kudu o dashboard SCM dell'app.

È possibile accedere a questo dashboard passando al sito Kudu.

Elementi forniti dalla console Kudu:

  • Impostazioni di ambiente per l'applicazione
  • Flusso di log
  • Dump di diagnostica
  • Console di debug in cui è possibile eseguire i cmdlet di PowerShell e i comandi DOS di base

Inoltre, nel caso in cui l'applicazione generi eccezioni first-chance, è possibile usare Kudu e l'utilità della riga di comando Procdump dello strumento SysInternals per creare dump della memoria. I dump della memoria sono snapshot del processo e semplificano la risoluzione di problemi più complessi riscontrati nell'app.

Per altre informazioni sulle funzionalità disponibili in Kudu, vedere Gli strumenti online di Siti Web di Windows Azure su cui è necessario conoscere.

Attenuare il problema

Ridimensionare l'app

Nel Servizio App, per aumentare le prestazioni e la velocità effettiva, è possibile regolare il livello di scala a cui si esegue l'applicazione. L'aumento delle prestazioni di un'app comporta due azioni correlate: la modifica del piano di servizio app a un piano tariffario superiore e la configurazione di determinate impostazioni dopo il passaggio al piano tariffario superiore.

Per altre informazioni sul ridimensionamento, vedere Ridimensionare un'app nel Servizio app di Azure.

È anche possibile scegliere di eseguire l'applicazione in più di un'istanza. La scalabilità orizzontale non consente solo di ottenere una maggiore capacità di elaborazione, ma anche di usufruire di un certo livello di tolleranza di errore. Se il processo si arresta in un'istanza, le altre istanze continuano a gestire le richieste.

È possibile impostare il ridimensionamento in modo che sia manuale o automatico.

Usare il ripristino automatico

Il ripristino automatico ricicla il processo di lavoro per l'app in base alle impostazioni scelte, ad esempio modifiche di configurazione, richieste, limiti basati sulla memoria o il tempo necessario per eseguire una richiesta. La maggior parte del tempo, riciclare il processo è il modo più rapido per recuperare da un problema. Anche se è sempre possibile riavviare l'app direttamente all'interno del portale di Azure, il ripristino automatico lo esegue automaticamente. È sufficiente aggiungere alcuni trigger nel file web.config radice per l'app. Queste impostazioni funzionano nello stesso modo anche se l'applicazione non è un'app .NET.

Per altre informazioni, vedere il post di blog relativo alla correzione automatica di Siti Web di Azure.

Riavvia l'app

Il riavvio è spesso il modo più semplice per risolvere problemi occasionali. Nel portale di Azure sono disponibili le opzioni per arrestare o riavviare l'app.

Screenshot della barra dei menu dell'app con pulsanti arresta e riavvio.

È anche possibile gestire l'app usando Azure PowerShell. Per altre informazioni, vedere Gestire le risorse di Azure usando Azure PowerShell.