Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Video
Per ulteriori informazioni sugli errori 503, guarda i seguenti video:
| Video | Descrizione |
|---|---|
| Risolvere i problemi relativi a 503 Service Unavailable - NoActiveTargets | Scopri di più su:
|
Sintomo
L'applicazione client riceve il codice di stato della risposta HTTP 503 con il messaggio Service Unavailable e il codice di errore NoActiveTargets per le richieste del proxy API.
Messaggio di errore
Viene visualizzata la seguente risposta di errore:
HTTP/1.1 503 Service Unavailable
Nel corpo della risposta HTTP viene visualizzato il seguente messaggio di errore:
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
}
}
}
Possibili cause
La risposta HTTP 503 Service Unavailable con il codice di errore NoActiveTargets viene in genere osservata quando utilizzi uno o più server di destinazione nella configurazione dell'endpoint di destinazione nel proxy API.
La tabella seguente elenca le possibili cause della risposta 503 Service Unavailable con il codice di errore NoActiveTargets:
| Causa | Descrizione | Chi può eseguire i passaggi per la risoluzione dei problemi |
|---|---|---|
| Il server di destinazione è disattivato | Il server di destinazione specificato nella configurazione dell'endpoint di destinazione è disattivato. | Utenti di Edge Public Cloud e Private Cloud |
| Errori di connessione dovuti a una risoluzione DNS errata | La risoluzione DNS del server di destinazione ha generato indirizzi IP errati che hanno causato errori di connessione. | Utenti di Edge Private Cloud |
| Errori di connessione | Problemi di rete o di connettività impediscono al client di connettersi al server. | Utenti di Edge Private Cloud |
| Alias host di destinazione errato | L'host del server di destinazione specificato non è corretto o contiene caratteri indesiderati (ad esempio uno spazio). | Utenti di Edge Public Cloud e Private Cloud |
| Errori di handshake SSL | L'handshake TLS/SSL non è riuscito tra il client e il server. | Utenti di Edge Public Cloud e Private Cloud |
| Errori di controllo di integrità | I controlli di integrità configurati per verificare l'integrità del server di destinazione potrebbero non riuscire per qualche motivo. | Utenti di Edge Private Cloud |
Causa: il server di destinazione è disattivato
Se tutti i server di destinazione specificati nella configurazione dell'endpoint di destinazione sono disattivati, riceverai la risposta 503 Service Unavailable con il codice di errore NoActiveTargets.
Diagnosi
- Determina il nome del server di destinazione utilizzato nella configurazione dell'endpoint di destinazione specifica del proxy API non riuscito in uno dei seguenti modi:
- Se è presente un solo endpoint di destinazione, controlla quell'endpoint di destinazione specifico.
- Se sono presenti più endpoint di destinazione e non sai quale ha il server di destinazione disattivato, segui questi passaggi:
- Attiva la sessione di traccia, effettua la chiamata API e riproduci il problema: 503 Service Unavailable.
- Dalla traccia, vai a Target Request Flow Started e determina il nome dell'endpoint di destinazione come mostrato di seguito:
- Dopo aver identificato l'endpoint di destinazione, recupera il nome del server di destinazione utilizzato dalla configurazione dell'endpoint di destinazione, come mostrato nell'esempio seguente:
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>Nell'esempio precedente, è presente un solo server di destinazione denominato demo-target.
- Recupera la definizione di ciascuno dei server di destinazione utilizzati nell'endpoint di destinazione utilizzando l'interfaccia utente Edge o la chiamata API Edge.
Interfaccia utente Edge
Per recuperare la definizione utilizzando l'interfaccia utente Edge:
- Vai ad Admin (Amministrazione) > Environments (Ambienti) > Target Servers (Server di destinazione).
- Seleziona l'ambiente specifico in cui si verifica l'errore.
- Cerca il nome del server di destinazione specifico per recuperare la definizione del server di destinazione.
Ad esempio, digita il nome del server di destinazione
demo-targete vedrai la sua definizione come mostrato di seguito:
Tieni presente che il server di destinazione demo-target ha un alias host, un numero di porta e SSL è abilitato. Tuttavia, il server di destinazione stesso è disattivato , come indicato dall'elemento ENABLED in grigio.
API Edge
Per recuperare la definizione utilizzando l'API Edge:
Utilizza l' API Get TargetServer per recuperare la definizione del server di destinazione.
Output della definizione del server di destinazione
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>L'output dell'API Apigee mostra che il server di destinazione demo-target è disattivato perché l'elemento IsEnabled è impostato su false.
Poiché il server di destinazione è disattivato, il processore di messaggi invierà immediatamente 503 Service Unavailable con il codice di errore NoActiveTargets come risposta al client.

Risoluzione
Assicurati che i server di destinazione specifici utilizzati nella configurazione dell'endpoint di destinazione del proxy API siano sempre attivati.
Interfaccia utente Edge
- Vai ad Admin (Amministrazione) > Environments (Ambienti) > Target Servers (Server di destinazione).
- Seleziona l'ambiente specifico in cui si verifica l'errore.
- Cerca il nome del server di destinazione specifico per recuperare la sua definizione.
- Seleziona il server di destinazione specifico e fai clic su Edit (Modifica).
- Seleziona la casella di controllo Enabled (Attivato).
- Fai clic su Update (Aggiorna).
API Edge
Utilizza l'API Update a Target Server per aggiornare la definizione del server di destinazione e assicurati che IsEnabled sia impostato su true nel payload della richiesta dell'API, come mostrato di seguito:
<TargetServer name="demo-target">
<Host>demo-target.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer>
Se il problema persiste, vai a Raccogliere informazioni di diagnostica.
Diagnosticare i problemi utilizzando il monitoraggio delle API
Il monitoraggio delle API ti consente di isolare rapidamente le aree problematiche per diagnosticare gli errori, i problemi di prestazioni e di latenza e la loro origine, ad esempio app per sviluppatori API, proxy API, target di backend o la piattaforma API.
Segui un esempio di scenario
che mostra come risolvere i problemi 5xx con le API utilizzando il monitoraggio delle API. Ad esempio,
potresti voler configurare un avviso per ricevere una notifica quando il numero di messaging.adaptors.http.flow.NoActiveTargets
errori supera una determinata soglia.
Raccogliere informazioni di diagnostica
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni di diagnostica. Contatta l'assistenza Apigee e condividile:
- Se sei un utente di Public Cloud, fornisci le seguenti informazioni:
- Nome dell'organizzazione
- Nome ambiente
- Nome del proxy API
- Comando curl completo per riprodurre l'errore
- File di traccia contenente le richieste con 503 Service Unavailable con codice di errore NoActiveTargets
- Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato
- Nome ambiente
- Bundle del proxy API
- File di traccia contenente le richieste con 503 Service Unavailable con codice di errore NoActiveTargets
- Log di accesso 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)