Vous consultez la documentation Apigee Edge.
Accédez à la
documentation Apigee X. info
Vidéos
Regardez la vidéo suivante pour découvrir comment résoudre les erreurs 503 "Service indisponible".
| Vidéo | Description |
|---|---|
| Erreur 503 "Service indisponible" du serveur backend | Découvrez les points suivants :
|
Problème constaté
L'application cliente reçoit un code d'état de réponse HTTP 503 avec le message Service indisponible suite à un appel de proxy d'API.
Messages d'erreur
L'un des messages d'erreur suivants peut s'afficher :
HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
Un message d'erreur semblable au suivant peut également s'afficher dans la réponse HTTP :
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Remarque : Le code de réponse et le message d'erreur ci-dessus ne sont que des exemples. Dans certains cas, vous ne recevrez peut-être que le code de réponse d'erreur sans aucun message d'erreur. Le format et le contenu du code de réponse d'erreur et du message d'erreur peuvent varier en fonction de l'implémentation du serveur backend.
Causes
Le code d'état HTTP 503 signifie que le serveur n'est actuellement pas en mesure de traiter les requêtes entrantes. En règle générale, cette erreur se produit parce que le serveur est trop occupé ou est temporairement hors service pour maintenance.
Les causes possibles de la réponse 503 Service indisponible sont les suivantes :
| Cause | Description | Qui peut effectuer les étapes de dépannage ? |
|---|---|---|
| Serveur surchargé | Le serveur backend est surchargé ou dépasse sa capacité et ne peut pas traiter de nouvelles requêtes entrantes du client. | Utilisateurs d'Edge Cloud public et privé |
| Serveur en maintenance | Le serveur backend peut être temporairement en maintenance. | Utilisateurs d'Edge Cloud public et privé |
Cause : Serveur surchargé/Serveur en maintenance
Dans Apigee Edge, l'erreur 503 "Service indisponible" peut être renvoyée par un serveur backend dans l'une des circonstances suivantes :
- Un serveur backend est surchargé/occupé et ne peut pas traiter de nouvelles requêtes.
- Le serveur backend est hors service pendant une période temporaire en raison d'une maintenance.
Diagnostic
Pour diagnostiquer l'erreur, vous pouvez utiliser l'une des trois méthodes suivantes :
- Outil Trace
- Journaux d'accès NGINX
- Appel direct au serveur backend
Cliquez sur les onglets ci-dessous pour en savoir plus sur chaque méthode.
Outil Trace
- Activez la session de trace et effectuez l'appel d'API pour reproduire le problème : 503 "Service indisponible".
- Sélectionnez l'une des requêtes ayant échoué et examinez la trace.
- Parcourez les différentes phases de la trace et identifiez l'endroit où l'échec s'est produit.
- Si vous constatez que l'erreur 503 est renvoyée en réponse par le serveur cible,
la cause de l'erreur 503 est le serveur cible.
Voici un exemple de capture d'écran de trace montrant la réponse 503 "Service indisponible" reçue du serveur cible :
- Cliquez sur la phase Réponse reçue du serveur cible et parcourez les sections "En-têtes de réponse" et "Contenu de la réponse" pour voir si elles contiennent des informations utiles :
- Les en-têtes de réponse peuvent contenir l'en-tête "Serveur", qui indique l'endroit d'où la réponse d'erreur a été envoyée.
- Le contenu de la réponse peut contenir des informations supplémentaires sur la raison pour laquelle le serveur cible a envoyé le code de réponse 503.
- Vérifiez que l'erreur 503 provient du serveur cible en examinant
les valeurs de X-Apigee-fault-source et X-Apigee-fault-code dans la phase AX
(données d'analyse enregistrées) de la trace en suivant les étapes ci-dessous :
- Cliquez sur la phase AX (données d'analyse enregistrées) comme illustré dans la capture d'écran ci-dessous :

- Faites défiler les détails de la phase jusqu'à la section "En-têtes de réponse" et déterminez les valeurs
de X-Apigee-fault-code et X-Apigee-fault-source comme indiqué ci-dessous :

- Si les valeurs de X-Apigee-fault-source et X-Apigee-fault-code correspondent à celles indiquées dans le tableau ci-dessous, vous pouvez confirmer que l'erreur 503 provient du serveur cible :
En-têtes de réponse Valeur X-Apigee-fault-source cible X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- Cliquez sur la phase AX (données d'analyse enregistrées) comme illustré dans la capture d'écran ci-dessous :
- Vérifiez si vous utilisez le chaînage de proxy, c'est-à-dire si le serveur cible/point de terminaison cible est
appelant un autre proxy dans Apigee. Pour le déterminer :
- Revenez à la phase Requête envoyée au serveur cible et cliquez sur le bouton Afficher Curl et déterminez l'alias d'hôte du serveur cible.
- Si l'alias d'hôte du serveur cible pointe vers un alias d'hôte virtuel, il s'agit d'un chaînage de proxy. Dans ce cas, vous devez répéter toutes les étapes ci-dessus pour le proxy chaîné jusqu'à ce que vous déterminiez la cause réelle de l'erreur 503 "Service indisponible". Dans ces cas, l'erreur 503 "Service indisponible" peut également se produire dans d'autres proxys chaînés à d'autres étapes, ce que vous pouvez diagnostiquer à l'aide de ce guide.
- Si l'alias d'hôte du serveur cible pointe vers votre serveur backend, passez à la section Solution.
Journaux d'accès NGINX
Vous pouvez également consulter les journaux d'accès NGINX pour déterminer si le code d'état 503 a été envoyé par le serveur backend. Ceci est particulièrement utile si le problème est survenu par le passé ou s'il est intermittent, et que vous ne parvenez pas à capturer la trace dans l'interface utilisateur. Procédez comme suit pour déterminer ces informations à partir des journaux d'accès NGINX :
- Consultez les journaux d'accès NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Recherchez les erreurs 503 pour le proxy d'API spécifique pendant une durée spécifique (si le problème s'est produit par le passé) ou pour les requêtes qui échouent toujours avec le code 503.
- S'il existe des erreurs 503, vérifiez si l'erreur provient du serveur backend.
Si les valeurs de X-Apigee-fault-source et X-Apigee-fault-code correspondent aux
valeurs indiquées
dans le tableau ci-dessous, l'erreur 503 provient du serveur backend :
En-têtes de réponse Valeur X-Apigee-fault-source cible X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode Voici un exemple d'entrée montrant l'erreur 503 causée par le serveur cible :
- Examinez le proxy d'API spécifique et assurez-vous que vous utilisez le chaînage de proxy, c'est-à-dire si le serveur cible/point de terminaison cible n'appelle pas un autre proxy dans Apigee. Si vous utilisez le chaînage de proxy, vous devez répéter toutes les étapes ci-dessus pour le proxy chaîné jusqu'à ce que vous déterminiez la cause réelle de l'erreur 503 "Service indisponible". Dans ces cas, l'erreur 503 "Service indisponible" peut également se produire dans d'autres proxys chaînés à d'autres étapes, ce que vous pouvez diagnostiquer à l'aide de ce guide.
- Si vous confirmez que vous n'utilisez pas le chaînage de proxy et que l'erreur 503 provient de votre serveur backend, passez à la section "Solution".
Appel au serveur backend
Vous pouvez effectuer un appel direct au serveur backend et vérifier que vous obtenez la même réponse 503 "Service indisponible" que celle reçue lorsque la requête a été effectuée via Apigee Edge.
- Assurez-vous que vous disposez de tous les en-têtes, paramètres de requête et identifiants requis qui doivent être transmis au serveur backend dans le cadre de la requête.
- Si le service de backend est accessible publiquement, vous pouvez utiliser la commande curl, Postman ou tout autre client REST et appeler directement l'API du serveur backend.
- Si le serveur backend n'est accessible qu'à partir des processeurs de messages, vous pouvez utiliser la commande curl, Postman ou tout autre client REST et appeler directement l'API du serveur backend à partir du processeur de messages.
- Vérifiez que le service de backend renvoie bien l'erreur 503 "Service indisponible".
Solution
Si vous constatez que l'erreur 503 provient du serveur backend, vous pouvez procéder comme suit pour résoudre le problème :
- Si le problème est dû à l'indisponibilité du serveur backend pour maintenance, vous pouvez remettre le serveur backend en ligne après la période de maintenance.
- Si le problème est dû à la surcharge du serveur backend, alors résolvez le problème si vous avez accès au serveur backend. Sinon vous devrez peut-être collaborer avec votre équipe de serveurs backend pour résoudre le problème.
Diagnostiquer les problèmes à l'aide de la surveillance des API
La surveillance des API vous permet d'isoler rapidement les zones à problèmes pour diagnostiquer les problèmes d'erreur, de performances, et de latence et leur source, tels que les applications de développeur, les proxys d'API, les cibles backend, ou la plate-forme d'API.
Parcourez un exemple de scénario qui montre comment résoudre les problèmes 5xx avec vos API à l'aide de la surveillance des API. Par exemple, vous pouvez configurer une alerte pour être averti lorsque le nombre d'erreurs messaging.adaptors.http.flow.ErrorResponseCode dépasse un seuil particulier.
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, veuillez rassembler les informations de diagnostic suivantes, puis contacter l'assistance Apigee.
Si vous êtes un utilisateur du cloud public, fournissez les informations suivantes :
- Nom de l'organisation
- Nom de l'environnement
- Nom du proxy d'API
- Commande curl complète pour reproduire l'erreur 503
- Fichier de trace contenant les requêtes avec l'erreur 503 "Service indisponible"
- Si les erreurs 503 ne se produisent pas actuellement, indiquez la période avec les informations de fuseau horaire lorsque les erreurs 503 se sont produites par le passé.
Si vous êtes un utilisateur du cloud privé, fournissez les informations suivantes :
- Message d'erreur complet observé pour les requêtes ayant échoué.
- Nom de l'organisation, de l'environnement et du proxy d'API pour lesquels vous observez des erreurs 503.
- Bundle de proxy d'API.
- Fichier de trace contenant les requêtes avec l'erreur 503 "Service indisponible".
- Journaux d'accès NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Journaux du processeur de messages.
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Période avec les informations de fuseau horaire lorsque les erreurs 503 se sont produites.