503 Servizio non disponibile - Server di backend

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Video

Guarda il seguente video per scoprire di più sulla risoluzione degli errori 503 relativi al servizio non disponibile.

Video Descrizione
Errore 503 Servizio non disponibile dal server di backend Scopri di più su quanto segue:
  • Introduzione all'errore 503 del servizio non disponibile in Apigee Edge
  • Risoluzione dei problemi di un servizio 503 in tempo reale non disponibile dal server di backend

Sintomo

L'applicazione client riceve uno stato di risposta HTTP 503 con il messaggio Servizio non disponibile a seguito di una chiamata proxy API.

Messaggi di errore

Potresti visualizzare uno dei seguenti messaggi di errore:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Nella risposta HTTP potresti anche visualizzare un messaggio di errore simile al seguente:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Nota: il codice di risposta e il messaggio di errore precedenti sono solo esempi. In alcuni casi, potresti ricevere solo il codice di risposta di errore senza alcun messaggio di errore. Il formato e i contenuti del codice di risposta e del messaggio di errore possono variare a seconda dell'implementazione del server di backend.

Cause

Il codice di stato HTTP 503 indica che al momento il server non è in grado di gestire le richieste in entrata. In genere, questo errore si verifica perché il server è troppo occupato o non è temporaneamente disponibile per manutenzione.

Le possibili cause della risposta 503 Service available (Servizio non disponibile) sono:

Causa Descrizione Chi può eseguire la procedura di risoluzione dei problemi
Server sovraccarico Il server di backend è sovraccarico o oltre la sua capacità e non può gestire nuove richieste del client in entrata. Utenti di cloud pubblico e privato perimetrale
Server in manutenzione Il server di backend potrebbe essere temporaneamente in fase di manutenzione. Utenti di cloud pubblico e privato perimetrale

Causa: server/server sovraccarico in manutenzione

In Apigee Edge, l'errore 503 Servizio non disponibile può essere restituito da un server di backend in una delle seguenti circostanze:

  • Un server di backend è sovraccarico/occupato e non può gestire nuove richieste.
  • Il server di backend è inattivo per un periodo temporaneo a causa di manutenzione.

Diagnostica

Per diagnosticare l'errore, puoi utilizzare uno dei seguenti tre metodi:

  • Strumento Traccia
  • Log degli accessi NGINX
  • Chiamata diretta al server di backend

Fai clic sulle schede qui sotto per informazioni su ciascun metodo.

Strumento Traccia

  1. Abilita la sessione di traccia ed effettua la chiamata API per riprodurre il problema: servizio 503 non disponibile.
  2. Seleziona una delle richieste non riuscite ed esamina la traccia.
  3. Naviga tra le varie fasi della traccia e individua il punto in cui si è verificato l'errore.
  4. Se il server di destinazione restituisce l'errore 503 come risposta, la causa dell'errore 503 è il server di destinazione.

    Ecco uno screenshot della traccia di esempio che mostra la risposta 503 Service Non disponibile ricevuta dal server di destinazione:

  5. Fai clic sulla fase Risposta ricevuta dal server di destinazione e consulta le sezioni Intestazioni della risposta e Contenuto della risposta per verificare se contengono informazioni utili:
    • Le intestazioni delle risposte possono contenere l'intestazione del server, che indica l'origine da cui è stata inviata la risposta di errore.
    • Il contenuto della risposta potrebbe contenere informazioni aggiuntive sul motivo per cui il server di destinazione ha inviato il codice di risposta 503.
  6. Verifica che l'errore 503 provenga dal server di destinazione controllando i valori di X-Apigee-fault-source e X-Apigee-fault-code nella fase AX (Dati di analisi registrati) della traccia seguendo i passaggi riportati di seguito:
    1. Fai clic sulla fase AX (Analytics Data Recorded) come mostrato nello screenshot di seguito:
    2. Scorri verso il basso i dettagli della fase fino alla sezione Intestazioni delle risposte e determina i valori di X-Apigee-fault-code e X-Apigee-fault-source come mostrato di seguito:
    3. Se i valori di X-Apigee-fault-source e X-Apigee-fault-code corrispondono ai valori mostrati nella tabella seguente, puoi confermare che l'errore 503 proviene dal server di destinazione:
      Intestazioni delle risposte Valore
      X-Apigee-fault-source target
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Verifica se stai utilizzando un concatenamento di proxy, ovvero se l'endpoint del server/target di destinazione richiede un altro proxy in Apigee. Per determinarlo:
    1. Torna alla fase Richiesta inviata al server di destinazione e fai clic sul pulsante Mostra arricciatura e determina l'alias host del server di destinazione.
    2. Se l'alias dell'host del server di destinazione rimanda a un alias host virtuale, si tratta di un concatenamento del proxy. In questo caso, devi ripetere tutti i passaggi precedenti per il proxy concatenato fino a determinare la causa effettiva dell'errore 503 Servizio non disponibile. In questi casi, il servizio 503 non disponibile potrebbe verificarsi anche in altri proxy concatenati in altre fasi, il che può essere diagnosticato utilizzando questo playbook.
    3. Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, vai alla sezione Risoluzione.

Log degli accessi NGINX

Puoi anche fare riferimento ai log lccess NGINX per determinare se il codice di stato 503 è stato inviato dal server di backend. Questa funzionalità è particolarmente utile se il problema si è verificato in passato o se è intermittente e non riesci ad acquisire la traccia nell'interfaccia utente. Per determinare queste informazioni dai log degli accessi di NGINX, segui questi passaggi:

  1. Controlla i log degli accessi di NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Cerca eventuali errori 503 per il proxy API specifico durante un periodo di tempo specifico (se il problema si è verificato in passato) o per eventuali richieste che continuano a non funzionare con il codice 503.
  3. Se sono presenti errori 503, controlla se l'errore proviene dal server di backend. Se i valori di X-Apigee-fault-source e X-Apigee-fault-code corrispondono ai valori mostrati nella tabella seguente, l'errore 503 proviene dal server di backend:
    Intestazioni delle risposte Valore
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Di seguito è riportato una voce di esempio che mostra l'errore 503 causato dal server di destinazione:

  4. Esamina il proxy API specifico e assicurati di utilizzare il concatenamento di proxy, ovvero se l'endpoint del server/target non richiama un altro proxy in Apigee. Se utilizzi il concatenamento di proxy, devi ripetere tutti i passaggi precedenti per il proxy concatenato fino a determinare la causa effettiva dell'errore 503 Servizio non disponibile. In questi casi, il servizio 503 non disponibile potrebbe verificarsi anche in altri proxy concatenati in altre fasi, che puoi diagnosticare utilizzando questo playbook.
  5. Se confermi di non utilizzare il concatenamento di proxy e se l'errore 503 proviene dal tuo server di backend, vai alla sezione Risoluzione.

Chiamata al server di backend

Puoi effettuare una chiamata diretta al server di backend e verificare di ricevere la stessa risposta 503 Servizio non disponibile ricevuta quando la richiesta è stata effettuata tramite Apigee Edge.

  1. Assicurati di disporre di tutte le intestazioni, dei parametri di query e delle credenziali che devono essere trasmesse al server di backend nell'ambito della richiesta.
  2. Se il servizio di backend è accessibile pubblicamente, puoi utilizzare il comando curl, Postman o qualsiasi altro client REST e richiamare direttamente l'API del server di backend.
  3. Se il server di backend è accessibile solo dai processori di messaggi, puoi utilizzare il comando curl, Postman o qualsiasi altro client REST e richiamare l'API del server di backend direttamente dal processore di messaggi.
  4. Verifica che il servizio di backend restituisca effettivamente l'errore 503 Service available (Servizio non disponibile).

Risoluzione

Se hai la certezza che l'errore 503 provenga dal server di backend, puoi procedere nel seguente modo per risolvere il problema:

  • Se il problema è causato dal fatto che il server di backend non è disponibile a causa di un intervento di manutenzione, puoi riattivare il server di backend dopo il periodo di manutenzione.
  • Se il problema è causato dal sovraccarico del server di backend, correggilo se hai accesso al server di backend. In caso contrario, potresti dover collaborare con il team del tuo server di backend per risolvere il problema.

Diagnostica i problemi utilizzando API Monitoring

Il monitoraggio delle API consente di isolare rapidamente le aree problematiche per diagnosticare i problemi di errore, di prestazioni e di latenza e la relativa origine, ad esempio app per sviluppatori, proxy API, target di backend o la piattaforma API.

Esamina uno scenario di esempio che dimostri come risolvere i problemi 5xx relativi alle tue API utilizzando API Monitoring. Ad esempio, potresti voler configurare un avviso per ricevere una notifica quando il numero di errori Messaging.adaptors.http.flow.ErrorResponseCode supera una determinata soglia.

Devi raccogliere dati diagnostici

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e contatta l'assistenza Apigee.

Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:

  • Nome organizzazione
  • Nome ambiente
  • Nome proxy API
  • Completa il comando curl per riprodurre l'errore 503
  • File di traccia contenente le richieste con errore 503 Service Non disponibile
  • Se al momento gli errori 503 non si verificano, fornisci il periodo di tempo con le informazioni sul fuso orario in cui si sono verificati errori 503 in passato.

Se sei un utente del cloud privato, fornisci le seguenti informazioni:

  • Messaggio di errore completo osservato per le richieste non riuscite.
  • Organizzazione, Nome ambiente e Nome proxy API per i quali stai osservando errori 503.
  • Pacchetto proxy API.
  • File di traccia contenente le richieste con errore 503 Servizio non disponibile.
  • Log degli accessi NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Log del processore di messaggi.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Il periodo di tempo con le informazioni sul fuso orario in cui si sono verificati gli errori 503.