Risolvere gli errori HTTP "502 - Gateway non valido" e "503 - Servizio non disponibile" nel Servizio app di Azure

Gli errori "502 - Gateway non valido" e "503 - Servizio non disponibile" sono comuni nelle app ospitate nel Servizio app di Azure. Questo articolo fornisce informazioni utili per la risoluzione di questi errori.

Se in qualsiasi punto dell'articolo sono necessarie altre informazioni, è possibile contattare gli esperti di Azure nei forum MSDN e overflow dello stack relativi ad Azure. In alternativa, è anche possibile archiviare un evento imprevisto di supporto tecnico di Azure. Passare al sito di supporto per Azure e fare clic su Ottenere supporto.

Sintomo

Quando si passa all'app, viene restituito un errore HTTP "502 - Gateway non valido" o HTTP "503 - Servizio non disponibile".

Causa

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

  • le richieste impiegano troppo tempo
  • utilizzo elevato di memoria/CPU da parte dell'applicazione
  • arresto anomalo dell'applicazione a causa di un'eccezione.

Passaggi per la risoluzione degli errori "503 - Servizio non disponibile" e "502 - Gateway non valido"

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

  1. Osservare e monitorare il comportamento dell'applicazione
  2. Raccogliere i dati
  3. Attenuare il problema

Il servizio app presenta diverse opzioni per ogni passaggio.

1. Osservare e monitorare il comportamento dell'applicazione

Tenere traccia dell'integrità del servizio

Microsoft Azure pubblica un annuncio ogni volta che si verifica un'interruzione del servizio o una riduzione delle prestazioni. È possibile verificare l'integrità del servizio nel portale di Azure. Per altre informazioni, vedere Tenere traccia dell’integrità del servizio.

Monitorare l'app

Questa opzione consente di trovare eventuali problemi nell'applicazione. Nel pannello dell'app fare clic sul riquadro Richieste ed errori. Il pannello Metrica mostra le metriche che si possono aggiungere.

Le metriche più comunemente monitorate per le app sono

  • Working set della memoria medio
  • Tempo di risposta medio
  • Tempo CPU
  • Working set della memoria
  • Requests

Monitorare le app per risolvere gli errori HTTP 502 - Gateway non valido e 503 - Servizio non disponibile

Per altre informazioni, vedere:

2. Raccogliere i dati

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 vengono rilevati problemi nell'app, lo strumento di diagnostica ne evidenzia la natura per poter semplificare e velocizzare l'individuazione e la risoluzione del 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 riquadro di spostamento a sinistra fare clic su Diagnostica 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 collegamento https://< Nome> app.scm.azurewebsites.net/.

Elementi forniti dalla console Kudu:

  • impostazioni di ambiente per l'applicazione
  • log in streaming
  • 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 il post di blog relativo agli strumenti online di Siti Web di Azure che è opportuno conoscere.

3. Attenuare il problema

Ridimensionare l'app

Nel servizio app di Azure, per ottimizzare le prestazioni e la velocità effettiva è possibile modificare il piano in cui è in esecuzione l'applicazione. Aumentare le prestazioni di un'app implica due azioni correlate: passare a un piano tariffario superiore e configurare determinate impostazioni una volta adottato il nuovo piano.

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. In questo modo, non solo si ottiene una maggiore capacità di elaborazione, ma si può usufruire della tolleranza di errore. Se il processo si arresta in un'istanza, l'altra istanza continuerà a gestire le richieste.

È possibile impostare il ridimensionamento manuale o automatico.

Usare la funzionalità AutoHeal

La funzionalità AutoHeal consente di riciclare il processo di lavoro per l'app in base alle impostazioni specificate, ad esempio modifiche di configurazione, richieste, limiti basati sulla memoria o il tempo necessario per l'esecuzione di una richiesta. Nella maggior parte dei casi, riciclare il processo costituisce il modo più veloce per risolvere un problema. Anche se è possibile riavviare l'app direttamente dall'interno del portale di Azure, la funzionalità AutoHeal eseguirà questa operazione automaticamente. È sufficiente aggiungere alcuni trigger nel file web.config radice per l'app. Si noti che queste impostazioni funzionano allo stesso modo anche per le applicazioni non .NET.

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

Riavviare l'app

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

riavviare l'app per risolvere gli errori HTTP

È anche possibile gestire l'app usando Azure PowerShell. Per altre informazioni, vedere Uso di Azure PowerShell con Gestione risorse di Azure.