503 Service indisponible – Serveur backend

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Vidéos

Regardez la vidéo suivante pour en savoir plus sur la résolution des erreurs 503 Service non disponible.

Vidéo Description
<ph type="x-smartling-placeholder"></ph> 503 Erreur : Service non disponible du serveur backend Apprenez-en plus sur les points suivants: <ph type="x-smartling-placeholder">
    </ph>
  • Introduction à l'erreur 503 Service indisponible dans Apigee Edge
  • le dépannage et la résolution d'une erreur 503 Service non disponible en temps réel depuis Serveur backend

Symptôme

L'application cliente reçoit l'état d'une réponse HTTP 503 avec le message Service Unavailable qui suit 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, il se peut que vous ne receviez que le code de réponse d'erreur, sans message d'erreur. Le format et le contenu du code de réponse d'erreur et du message d'erreur peuvent varier en fonction l'implémentation du serveur backend.

Causes

Le code d'état HTTP 503 signifie que le serveur est actuellement incapable de gérer le trafic entrant requêtes. Généralement, cette erreur se produit lorsque le serveur est trop occupé ou temporairement indisponible pour cause de maintenance.

Causes possibles de la réponse 503 Service Unavailable:

Cause Description Qui peut effectuer la procédure de dépannage ?
Serveur surchargé Le serveur backend est surchargé ou dépasse sa capacité, et ne peut pas gérer les requêtes client entrantes. Utilisateurs Edge de cloud public et privé
Serveur en maintenance Le serveur backend est peut-être temporairement en maintenance. Utilisateurs Edge de cloud public et privé

Cause: serveur/serveur surchargé en cours de maintenance

Dans Apigee Edge, l'erreur 503 Service indisponible peut être renvoyée à partir d'un serveur backend dans l'un des cas suivants:

  • Un serveur backend est surchargé ou occupé et ne peut pas gérer de nouvelles requêtes.
  • Le serveur backend est arrêté pour une période temporaire en raison d'une opération de 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

  1. Activez la session de trace. et effectuez l'appel d'API pour reproduire le problème - 503 Service Unavailable.
  2. Sélectionnez l'une des requêtes ayant échoué et examinez la trace.
  3. Parcourez les différentes phases de la trace et localisez l'origine de l'échec.
  4. Si vous constatez que l'erreur 503 est renvoyée en tant que réponse du 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 Unavailable (Service non disponible) reçue. à partir du serveur cible:

  5. Cliquez sur la phase Réponse reçue du serveur cible, puis suivez les En-têtes de réponse et "Contenu de la réponse" pour vérifier s'ils contiennent des informations utiles: <ph type="x-smartling-placeholder">
      </ph>
    • Les en-têtes de réponse peuvent contenir l'en-tête Serveur, qui indique d'où provient la réponse d'erreur.
    • Le contenu de la réponse peut contenir des informations supplémentaires expliquant pourquoi le serveur cible a envoyé le code de réponse 503.
  6. Confirmez que l'erreur 503 provient du serveur cible en vérifiant les valeurs de X-Apigee-fault-source et X-Apigee-fault-code dans le AX (Données analytiques enregistrées) Phase dans la trace en suivant les étapes ci-dessous: <ph type="x-smartling-placeholder">
      </ph>
    1. Cliquez sur la phase AX (Analytics Data Recorded) Phase, comme illustré dans la capture d'écran ci-dessous:
    2. Faites défiler Phase Details (Détails de la phase) vers le bas jusqu'à la section Response Headers (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:
    3. Si les valeurs de X-Apigee-fault-source et X-Apigee-fault-code correspondent aux valeurs dans le tableau ci-dessous, vous pouvez vérifier que l'erreur 503 provient bien serveur cible:
      En-têtes de réponse Valeur
      X-Apigee-fault-source cible
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Vérifiez si vous utilisez un chaînage de proxy, c'est-à-dire si le serveur/point de terminaison cible est en appelant un autre proxy dans Apigee. Pour déterminer cela: <ph type="x-smartling-placeholder">
      </ph>
    1. Revenez à la phase Request sent to target server (Requête envoyée au serveur cible). cliquez sur le bouton Show Curl (Afficher le curseur) et déterminez l'alias de l'hôte du serveur cible.
    2. Si l'alias hôte du serveur cible pointe vers un alias d'hôte virtuel, il est via un chaînage de proxy. Dans ce cas, vous devez répéter toutes les étapes ci-dessus pour l'ensemble de données jusqu'à ce que vous déterminiez ce qui cause réellement l'erreur 503 Service indisponible. Dans ces cas-là, le message 503 Service non disponible peut se produire dans d'autres proxys enchaînés dans d'autres qui peut être diagnostiquée à l'aide ce playbook.
    3. Si l'alias d'hôte du serveur cible pointe vers votre serveur backend, accédez à Résolution.

Journaux d'accès NGINX

Vous pouvez également consulter les journaux lccess NGINX pour déterminer si le code d'état 503 a été envoyé. par le serveur backend. Cela est particulièrement utile si le problème s'est produit par le passé ou si le problème se produit par intermittence et que vous ne parvenez pas à capturer la trace dans l'UI. Procédez comme suit pour obtenir ces informations à partir des journaux d'accès NGINX:

  1. Vérifiez les journaux d'accès NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Rechercher les erreurs 503 pour le proxy d'API spécifique pendant une durée déterminée (si le problème s'est produit dans le passé) ou si les requêtes échouent toujours avec le code 503.
  3. En cas d'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 à la valeurs affiché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 illustrant l'erreur 503 causée par le serveur cible:

  4. Examinez le proxy d'API spécifique et assurez-vous que vous utilisez chaînage de proxy, si le serveur/point de terminaison cible n'appelle pas un autre proxy dans Apigee. Si vous utilisez vous devez répéter toutes les étapes ci-dessus pour le chaînage de proxy jusqu'à vous déterminez ce qui cause réellement l'erreur 503 Service non disponible. Dans ces cas, Le code 503 Service non disponible peut également se produire dans d'autres proxys en chaîne à d'autres étapes, que vous pouvez diagnostiquer à l'aide de ce playbook.
  5. Si vous confirmez que vous n'utilisez pas de chaînage de proxy et que l'erreur 503 provient de votre serveur backend, puis accédez à Résolution.

Appel au serveur backend

Vous pouvez appeler directement le serveur backend et vérifier que vous obtenez les mêmes Réponse 503 Service indisponible telle que reçue lorsque la demande a été effectuée via Apigee Edge.

  1. Assurez-vous de disposer de tous les en-têtes et paramètres de requête requis, ainsi que de tous les identifiants doivent être transmises au serveur backend dans la requête.
  2. 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.
  3. Si le serveur backend n'est accessible qu'à partir des processeurs de messages, vous pouvez utiliser le curl, Postman ou tout autre client REST et appeler directement l'API du serveur backend. du processeur de messages.
  4. Vérifiez que le service de backend renvoie bien l'erreur 503 Service indisponible.

Solution

Si vous êtes sûr que l'erreur 503 provient du serveur backend, vous pouvez effectuer la pour résoudre le problème:

  • Si le problème est dû à un arrêt du serveur backend pour cause de maintenance, vous pouvez mettre le serveur backend en ligne après la période de maintenance.
  • Si le problème est dû à une surcharge du serveur backend, résoudre le problème si vous avez accès au serveur backend. Sinon, vous devrez peut-être collaborer avec l'équipe de votre serveur 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 les zones problématiques pour diagnostiquer rapidement les erreurs, les performances et les problèmes de latence et leur source, tels que les applications de développement, les mandataires d'API, les cibles de backend, ou la plate-forme d'API.

Examiner un exemple scénario suivant 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 numéro du 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 alors que vous avez suivi les instructions ci-dessus, veuillez rassembler les à l'aide des informations de diagnostic, Assistance Apigee

Si vous utilisez un cloud public, fournissez les informations suivantes:

  • Nom de l'organisation
  • Nom de l'environnement
  • Nom du proxy d'API
  • Exécutez la commande curl pour reproduire l'erreur 503
  • Fichier de suivi contenant les requêtes avec l'erreur 503 Service indisponible
  • Si les erreurs 503 ne se produisent pas actuellement, indiquez la période avec le fuseau horaire. lorsque des erreurs 503 se sont produites par le passé.

Si vous êtes un utilisateur de cloud privé, fournissez les informations suivantes:

  • Message d'erreur complet observé pour les requêtes en échec.
  • Organisation, nom de l'environnement et nom du proxy d'API pour lesquels vous observez des erreurs 503.
  • API Proxy Bundle.
  • Fichier de suivi contenant les requêtes avec l'erreur 503 Service non disponible.
  • 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 au cours de laquelle les erreurs 503 se sont produites.