Errore interno del server 500: server di backend

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Video

Video Descrizione
500 Errore interno del server, causato dal backend Mostra un valore 500 Internal Server Error in tempo reale causato dal server di backend, insieme ai passaggi per la risoluzione dei problemi e l'errore.

Sintomo

L'applicazione client riceve un codice di stato HTTP di 500 con il messaggio Internal Server Error come risposta per le chiamate API.

Il codice di stato HTTP 500 è una risposta di errore generica. Significa che il server ha riscontrato una condizione imprevista che gli ha impedito di soddisfare la richiesta. Questo errore è di solito restituito dal server quando non è idoneo nessun altro codice di errore.

Messaggi di errore

L'applicazione client riceve il seguente codice di risposta:

HTTP/1.1 500 Internal Server Error

Inoltre, potresti visualizzare un messaggio di errore simile a quello mostrato di seguito:

Esempio 1

Esempio di risposta del server di backend n. 1

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

Esempio 2

Esempio di risposta del server di backend n. 2

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

Possibili cause

500 Internal Server Error potrebbe essere restituito dal server di backend a causa di un diverse cause. Questa guida pratica spiega come risolvere i problemi utilizzando i passaggi comuni a prescindere dalla causa.

Le possibili cause sono le seguenti:

Causa Descrizione Le istruzioni di risoluzione dei problemi applicabili a
Errore nel server di backend Il server di backend potrebbe non riuscire per qualche motivo. Utenti Edge di cloud privato e pubblico

Passaggi diagnostici comuni

Utilizza uno dei seguenti strumenti/tecniche per diagnosticare questo errore:

Monitoraggio delle API

Procedura 1: utilizzo del monitoraggio delle API

Per diagnosticare l'errore utilizzando API Monitoring:

  1. Accedi alla UI di Apigee Edge come utente con ruolo appropriato.
  2. Passa all'organizzazione in cui vuoi esaminare il problema.

  3. Vai al menu Analizza > Monitoraggio delle API > Esamina.
  4. Seleziona il periodo di tempo specifico in cui hai osservato gli errori.
  5. Traccia il codice di errore in base all'ora.

  6. Seleziona una cella che contiene il codice di errore messaging.adaptors.http.flow.ErrorResponseCode come mostrato sotto:

    ( visualizza immagine ingrandita)

  7. Informazioni sul codice di errore messaging.adaptors.http.flow.ErrorResponseCode visualizzato come come mostrato di seguito:

    ( visualizza immagine ingrandita)

  8. Fai clic su Visualizza log ed espandi la riga della richiesta non riuscita.

    ( visualizza immagine ingrandita)

  9. Nella finestra Log, tieni presente i seguenti dettagli:
      .
    • ID messaggio di richiesta
    • Codice di stato: 500
    • Origine errore:target
    • Codice di errore: messaging.adaptors.http.flow.ErrorResponseCode

Trace

Procedura 2: utilizzo dello strumento Trace

Per diagnosticare l'errore utilizzando lo strumento Trace:

  1. Attiva la sessione di traccia e
      .
    • Attendi l'errore 500 Internal Server Error con il codice di errore messaging.adaptors.http.flow.ErrorResponseCode affinché si verifichino o
    • Se riesci a riprodurre il problema, esegui la chiamata API per riprodurlo. 500 Internal Server Error
  2. Assicurati che l'opzione Mostra tutte le informazioni di Flow sia attivata:

  3. Seleziona una delle richieste non riuscite ed esamina la traccia.
  4. Naviga attraverso le diverse fasi della traccia e individua dove si è verificato l'errore.
  5. In genere, troverai l'errore in un flusso successivo alla Risposta ricevuta dal server di destinazione come illustrato di seguito:

    ( visualizza immagine ingrandita)

  6. Vai alla fase AX (dati registrati di Analytics) della traccia e fai clic su quest'ultima.
  7. Scorri verso il basso fino alla sezione Intestazioni della risposta con i dettagli della fase e determina il i valori di X-Apigee-fault-code e X-Apigee-fault-source, e X-Apigee-Message-ID come mostrato di seguito:

    ( visualizza immagine ingrandita)

  8. Nota i valori di X-Apigee-fault-code, X-Apigee-fault-source, e X-Apigee-Message-ID:
  9. Intestazioni della risposta Valore
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

Procedura 3: usare i log di accesso NGINX

Per diagnosticare l'errore utilizzando i log di accesso NGINX:

  1. Se sei un utente Private Cloud, puoi utilizzare i log di accesso NGINX per determinare le informazioni chiave su HTTP 500 Internal Server Error.
  2. Controlla i log di accesso NGINX:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Cerca per vedere se ci sono errori 500 con codice di errore messaging.adaptors.http.flow.ErrorResponseCode per un periodo di tempo specifico (se il problema si è verificato nella precedenti) o se ci sono ancora richieste che non vanno a buon fine con 500.
  4. Se trovi errori 500 con la corrispondenza X-Apigee-fault-code il valore di messaging.adaptors.http.flow.ErrorResponseCode, determinare il valore della X-Apigee-fault-source.

    Esempio di errore 500 nel log di accesso NGINX:

    ( visualizza immagine ingrandita)

    La voce di esempio riportata sopra del log di accesso NGINX ha i seguenti valori per X-Apigee-fault-code e X-Apigee-fault-code

    Intestazioni Valore
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

Causa: errore nel server di backend

Diagnosi

La risposta di 500 Internal Server Error dal server di backend può essere sono causati da vari motivi. Dovrai diagnosticare ogni situazione in modo indipendente.

  1. Determinare il codice di errore, l'origine errore per l'errore osservato utilizzando API Monitoring. Strumento Trace o log di accesso NGINX, come spiegato in Passaggi di diagnostica comuni.
  2. Se Origine di errore è target e Codice di errore è messaging.adaptors.http.flow.ErrorResponseCode, questo indica che l'errore viene restituito dal server di backend.
  3. Per diagnosticare la causa del problema puoi procedere in uno dei seguenti modi:

    Trace

    Utilizzo di Trace:

    Se è presente una sessione di Trace per l'errore, segui questi passaggi:

    1. In Trace, seleziona la richiesta API che non è riuscita con 500 Internal Server Error.
    2. Seleziona la fase Risposta ricevuta dal server di destinazione dalla non riuscita la richiesta API, come illustrato nella figura seguente:

      ( visualizza immagine ingrandita)

    3. Scorri verso il basso fino alla sezione Dettagli fase e controlla la Contenuto della risposta,che contiene la risposta dal server di backend.

      Esempio di contenuti di risposta:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>
      

      Nella risposta precedente, tieni presente che il messaggio di errore del server di backend Non autorizzata. Questo indica che l'utente potrebbe aver trasmesso lo stato "Non valido" credenziali ed è per questo motivo che riceve questo errore.

    di Gemini Advanced.

    Chiama il server di backend

    Chiamata diretta al server di backend:

    Puoi effettuare una chiamata diretta al server di backend e:

    • Verifica se ricevi lo stesso 500 Internal Server Error risposta ricevuta quando è stata effettuata la richiesta tramite Apigee Edge
    • Controlla il messaggio di errore (risposta) ricevuto dal server di backend

    Per effettuare la chiamata diretta al server di backend, segui questi passaggi:

    1. Assicurati di avere tutte le intestazioni, i parametri di query e tutti gli eventuali le credenziali che devono essere passate al server di backend come parte della richiesta.
    2. Se il servizio di backend è accessibile pubblicamente, puoi utilizzare curl, Postman o qualsiasi altro client REST e richiamare l'API del server di backend.
    3. Se il server di backend è accessibile solo dai processori di messaggi, puoi 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 500 Internal Server Error e controlla il messaggio di errore (risposta) restituito dal server di backend. determinare la causa dell'errore.

    Log del server di backend

    Utilizzo dei log del server di backend

    1. Esamina i log del server di backend e prova a ottenere maggiori dettagli sull'errore e la causa.
    2. Se possibile, abilita la modalità di debug sul server di backend per ottenere maggiori dettagli sull'errore e sulla causa.
  4. Verifica se stai utilizzando concatenamento del proxy nello specifico endpoint di destinazione del proxy API che presenta errori. vale a dire, se il server/endpoint di destinazione sta richiamando un altro proxy Apigee Edge Per determinarlo:

    1. Se disponi della traccia per la richiesta non riuscita, vai alla sezione Richiesta inviata alla fase server di destinazione e fai clic su Mostra Curl.

    2. Si apre la finestra Curl per richieste inviate al server di destinazione, da cui puoi può determinare l'alias host del server di destinazione.
    3. Esamina l'endpoint di destinazione del proxy API e verifica se il server di backend l'URL o il nome host nel server di destinazione rimanda a un altro proxy o al tuo di backend.
    4. Se l'alias dell'host del server di destinazione rimanda a un alias dell'host virtuale, è il concatenamento di proxy. In questo caso, devi ripetere tutti i passaggi precedenti per proxy concatenato finché non stabilisci cosa sta effettivamente causando 500 Internal Server Error. In questi casi 500 Internal Server Error potrebbe avvengono anche in altri proxy concatenati, che possono essere diagnosticati risolto utilizzando le istruzioni fornite in questo playbook o nel Playbook sugli errori interni del server 500.
    5. Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, vai a Risoluzione.

Risoluzione

Se viene appurato che l'errore 500 proviene dal server di backend, collabora con il team dedicato al server di backend per risolvere il problema in modo appropriato.

Nell'esempio discusso sopra, per risolvere il problema potresti dover richiedere agli utenti di passare credenziali valide questo problema.

Punti chiave da tenere presente

  1. Il messaggio di errore effettivo restituito dal server di backend per 500 Internal Server Error può essere visualizzato solo se hai acquisito la sessione di traccia per l'errore richieste.
  2. La risposta del server di backend non verrà registrata in API Monitoring, log di accesso NGINX o Log del processore di messaggi per motivi di sicurezza.
  3. Puoi rivedere i log del server di backend o abilitare la modalità di debug nel backend per ottenere più dati dettagli su 500 Internal Server Error e/o visualizza il messaggio di errore restituito dal server di backend.

Raccogliere dati diagnostici

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

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 500
  • File di traccia contenente le richieste con 500 Internal Server Error
  • Se al momento gli errori 500 non si verificano, indica il tempo periodo con le informazioni sul fuso orario in cui si sono verificati 500 errori nel passato.

Se sei un utente di Private Cloud, fornisci le seguenti informazioni:

  • Messaggio di errore completo osservato per le richieste non riuscite
  • Organizzazione, nome ambiente e nome proxy API che stai esaminando 500 errore
  • Bundle proxy API
  • File di traccia contenente le richieste con 500 Internal Server Error
  • Log di accesso NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Dove: ORG, ENV e PORT# vengono sostituiti con valori effettivi.

  • Log di sistema 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 500.