Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Video
Guarda il seguente video per scoprire di più sulla risoluzione degli errori 503 "Servizio non disponibile".
Video | Descrizione |
---|---|
503 Errore di servizio non disponibile dal server di backend | Scopri di più su quanto segue:
|
Sintomo
L'applicazione client riceve uno stato di risposta HTTP 503 con il messaggio Servizio non disponibile una chiamata proxy API.
Messaggi di errore
Puoi 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
Potresti anche visualizzare un messaggio di errore simile al seguente nella risposta HTTP:
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 riportati in precedenza sono solo esempi. In alcuni casi, potresti ricevere solo il codice di risposta di errore senza alcun messaggio di errore. Il formato, il contenuto del codice di risposta di errore e il messaggio di errore possono variare in base a l'implementazione del server di backend.
Cause
Il codice di stato HTTP 503 indica che il server al momento non è in grado di gestire i messaggi in entrata richieste. Solitamente questo errore si verifica perché il server è troppo occupato o temporaneamente non disponibile per interventi di manutenzione.
Le cause possibili della risposta 503 Service Unavailable sono:
Causa | Descrizione | Chi può eseguire la procedura di risoluzione dei problemi |
---|---|---|
Server sovraccarico | Il server di backend è sovraccarico o supera la sua capacità e non può gestire nuovi richieste del client in arrivo. | Utenti perimetrali di cloud pubblici e privati |
Server in manutenzione | Il server di backend potrebbe essere temporaneamente in manutenzione. | Utenti perimetrali di cloud pubblici e privati |
Causa: server/server sovraccarico in manutenzione
In Apigee Edge, l'errore 503 Service 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 operazioni di manutenzione.
Diagnosi
Per diagnosticare l'errore, puoi utilizzare uno dei seguenti tre metodi:
- Strumento Trace
- Log di accesso NGINX
- Chiamata diretta al server di backend
Fai clic sulle schede che seguono per informazioni su ciascun metodo.
Strumento Trace
- Attiva la sessione di traccia, ed effettuare la chiamata API per riprodurre il problema: "503 Service Unavailable" (Servizio 503 non disponibile).
- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Naviga attraverso le varie fasi della traccia e individua dove si è verificato l'errore.
- Se noti che l'errore 503 viene restituito in risposta dal server di destinazione,
la causa dell'errore 503 è il server di destinazione.
Ecco uno screenshot di traccia di esempio che mostra la risposta 503 "Servizio non disponibile" ricevuta dal server di destinazione:
- Fai clic sulla fase Risposta ricevuta dal server di destinazione e segui la
Intestazioni della risposta e Contenuto della risposta per vedere se contengono informazioni utili:
- .
- Le intestazioni della risposta possono contenere l'intestazione Server, che indica da cui è stata inviata la risposta di errore.
- I Contenuti della risposta potrebbero includere ulteriori informazioni sul motivo il server di destinazione ha inviato il codice di risposta 503.
- Verifica che l'errore 503 provenga dal server di destinazione controllando
i valori di X-Apigee-fault-source e X-Apigee-fault-code nell'AX
(Dati registrati di Analytics) Fase di tracciatura seguendo i passaggi riportati di seguito:
- .
- Fai clic sulla fase AX (Analytics Data Recorded) come mostrato nello screenshot di seguito:
- Scorri verso il basso nella sezione Dettagli fase fino alla sezione Intestazioni della risposta e determina i valori. di X-Apigee-fault-code e X-Apigee-fault-source come mostrato di seguito:
- Se i valori di X-Apigee-fault-source e X-Apigee-fault-code corrispondono ai valori.
mostrato 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
- Controlla se stai utilizzando il concatenamento del proxy, ad esempio se il server/endpoint di destinazione è
di richiamare un altro proxy in Apigee. Per determinarlo:
- Torna alla fase Richiesta inviata al server di destinazione e fai clic sul pulsante Mostra Curl e determina l'alias host del server di destinazione.
- Se l'alias dell'host del server di destinazione rimanda a un alias host virtuale, concatenamento dei proxy. In questo caso, devi ripetere tutti i passaggi precedenti per fino a determinare cosa sta effettivamente causando l'errore 503 Servizio non disponibile. In questi casi potrebbe verificarsi un errore 503 "Servizio non disponibile" in altri proxy concatenati in altri e fasi che possono essere diagnosticate questo playbook.
- Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, vai a Risoluzione.
Log di accesso NGINX
Puoi anche fare riferimento ai log lccess NGINX per determinare se il codice di stato 503 è stato inviato dal server di backend. Ciò è particolarmente utile se il problema si è verificato in passato. o se il problema è intermittente e non riesci ad acquisire la traccia nell'interfaccia utente. Segui questi passaggi per determinare queste informazioni dai log di accesso di NGINX:
- Controlla i log di accesso di NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Cerca eventuali errori 503 per il proxy API specifico durante un periodo di tempo specifico (se il problema si è verificato in passato) o per le richieste che non hanno ancora ricevuto risposta 503.
- 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 al codice
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 un esempio di voce che mostra l'errore 503 causato dal server di destinazione:
- Esamina il proxy API specifico e assicurati di utilizzare proxy concatenamento, ovvero se le Il server di destinazione/l'endpoint di destinazione non sta richiamando un altro proxy in Apigee. Se utilizzi concatenare i proxy, devi ripetere tutti i passaggi precedenti per il proxy concatenato tu stabilisca cosa sta effettivamente causando l'errore 503 "Servizio non disponibile". In questi casi, 503 Servizio non disponibile può verificarsi anche in altri proxy concatenati in altre fasi, che puoi diagnosticare con questo playbook.
- Se confermi che non stai utilizzando il concatenamento dei proxy e l'errore 503 proviene dal tuo sul server di backend, quindi vai a Risoluzione.
Chiamata al server di backend
Puoi effettuare una chiamata diretta al server di backend e verificare di ottenere lo stesso 503 Risposta di servizio non disponibile ricevuta quando la richiesta è stata effettuata tramite Apigee Edge.
- Assicurati di disporre di tutte le intestazioni, i parametri di query e le credenziali richiesti deve essere passato al server di backend come parte della richiesta.
- 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.
- Se il server di backend è accessibile solo dai processori di messaggi, puoi utilizzare il metodo curl, Postman o qualsiasi altro client REST e richiamare direttamente l'API del server di backend. del processore di messaggi.
- Verifica che il servizio di backend restituisca l'errore 503 Servizio non disponibile.
Risoluzione
Se ti rendi conto che l'errore 503 proviene dal server di backend, puoi eseguire la per risolvere il problema:
- Se il problema è dovuto al fatto che il server di backend non è disponibile per interventi di manutenzione, puoi portare online il server di backend dopo il periodo di manutenzione.
- Se il problema è causato da un sovraccarico del server di backend, risolvi il problema se hai accesso al server di backend. Altrimenti potresti dover collaborare con il team del server di backend per risolvere il problema.
Diagnosticare i problemi utilizzando il monitoraggio delle API
Il monitoraggio delle API consente di isolare le aree problematiche più rapidamente per diagnosticare errori, a problemi di latenza e latenza e alla relativa origine, ad esempio app per sviluppatori, proxy API, destinazioni backend o la piattaforma API.
Visualizza un esempio scenario che illustra come risolvere i problemi 5xx relativi alle API usando il monitoraggio delle API. Ad esempio, potresti voler impostare un avviso per ricevere una notifica quando il numero di errori Messaging.adaptors.http.flow.ErrorResponseCode supera una determinata soglia.
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli il le seguenti informazioni diagnostiche e poi contatta Assistenza Apigee.
Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- Nome dell'organizzazione
- Nome ambiente
- Nome proxy API
- Completa il comando curl per riprodurre l'errore 503
- File di traccia contenente le richieste con errore 503 Servizio non disponibile
- Se gli errori 503 non si verificano al momento, indica il periodo di tempo con il fuso orario informazioni quando 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 riscontrando errori 503.
- bundle proxy API.
- File di traccia contenente le richieste con l'errore 503 Servizio non disponibile.
- Log di accesso a 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.