Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Comment puis-je résoudre les erreurs 504 qui s’affichent lorsque j'utilise un Application Load Balancer ?
Je souhaite résoudre l’erreur ELB_504 qui s’affiche dans les journaux d'accès de l'Application Load Balancer ou dans les métriques Amazon CloudWatch. Ou, une erreur HTTP 504 s’affiche lorsque je me connecte à mon service via un Application Load Balancer.
Brève description
Une erreur HTTP 504 se produit lorsqu'une passerelle ou un proxy expire. Des erreurs HTTP 504 de l'Application Load Balancer peuvent survenir pour les raisons suivantes :
- L’équilibreur de charge n'a pas pu établir une connexion à la cible avant l'expiration du délai de connexion de 10 secondes.
- L'équilibreur de charge a rencontré une expiration du délai d'établissement de liaison SSL lorsqu'il s'est connecté à une cible.
Remarque : Vous ne pouvez pas régler le délai d'expiration de 10 secondes pour l’établissement de la liaison SSL. - L’équilibreur de charge a établi une connexion avec la cible, mais la cible n'a pas répondu avant l'expiration du délai d'inactivité.
- La cible a renvoyé une valeur d'en-tête Content-Length supérieure au corps de l'entité, et le délai d'attente de l’équilibreur de charge a expiré.
- Le trafic élevé a entraîné une réaction plus lente des cibles.
- La cible est une fonction AWS Lambda et le service n'a pas répondu avant l'expiration du délai de connexion.
Résolution
Vérifier que votre équilibreur de charge autorise le trafic avec des cibles enregistrées
Vérifiez la métrique CloudWatch TargetConnectionErrorCount à l'aide de la statistique Somme. Si des points de données positifs apparaissent au lieu de 0, cela signifie qu'il existe des problèmes de connexion entre l'équilibreur de charge et la cible.
Pour résoudre ces problèmes, vérifiez les groupes de sécurité réseau associés à l'équilibreur de charge et aux cibles de backend. Assurez-vous que les groupes de sécurité réseau autorisent le trafic entre l'équilibreur de charge et les cibles dans les deux directions sur les ports de contrôle du trafic et de surveillance de l’état. Vérifiez que la liste de contrôle d'accès réseau (ACL réseau) du sous-réseau autorise le trafic des cibles vers les nœuds d'équilibreur de charge sur les ports éphémères (1024-65535).
Remarque : Il est recommandé d'utiliser des règles de groupe de sécurité spécifiques pour votre Application Load Balancer.
Vérifier les métriques de votre équilibreur de charge
Pour déterminer la raison pour laquelle vos cibles sont considérées comme non saines, consultez les métriques CloudWatch relatives à votre Application Load Balancer. S'il n'existe pas de données métriques HTTPCode_ELB_504_Count, cela signifie que vos serveurs d'applications ont renvoyé les erreurs 504, et non l'équilibreur de charge. Vérifiez si la valeur maximale de la métrique TargetResponseTime dépasse fréquemment la valeur du délai d'expiration, car cette configuration peut provoquer des erreurs 504.
Vérifiez également les métriques d'utilisation de processeur et de mémoire suivantes dans vos cibles en fonction du type de ressource :
- Pour Amazon Elastic Compute Cloud (Amazon EC2), vérifiez la métrique CPUUtilization. Les instances EC2 n'envoient pas de métriques de mémoire à CloudWatch par défaut, mais vous pouvez envoyer une métrique de mémoire personnalisée.
- Pour les tâches Amazon ECS, consultez les métriques CPUUtilization et MemoryUtilization. Si la valeur de l'un ou l'autre est 1 (100 %), la tâche ne répond plus.
- Pour les fonctions Lambda, vérifiez la métrique Durée. Si la durée est plus longue que la valeur du délai d'inactivité de l'équilibreur de charge, une erreur Délai d’expiration de la passerelle s’affiche.
Augmenter la disponibilité de vos ressources
Si vos cibles font un usage élevé du processeur, elles risquent de ne plus répondre.
Pour résoudre ce problème, augmentez les ressources suivantes pour vos cibles :
- Pour Amazon EC2, augmentez la taille d'instance afin de permettre à la cible d'utiliser davantage de ressources de calcul.
- Pour les tâches Amazon ECS, augmentez les quotas de processeur et de mémoire dans votre définition de tâche Amazon ECS.
- Pour les fonctions Lambda, augmentez sa mémoire pour modifier la capacité de ressources.
Remarque : La quantité de processeur et de mémoire que vous affectez à la fonction est proportionnelle.
Mettez à jour le code de votre application afin que cette dernière soit plus efficace lorsqu'elle répond aux requêtes HTTP. Assurez-vous que l'application ne met pas plus de temps à répondre que le délai d'inactivité configuré. Par défaut, le délai d'inactivité d’un Application Load Balancer est de 60 secondes. Si nécessaire, augmentez le délai d'inactivité de votre équilibreur de charge.
Remarque : Il est recommandé d'augmenter la valeur du délai d'inactivité uniquement lorsque la cible a un grand nombre d'opérations de calcul à effectuer. Dans le cas contraire, il est préférable d'optimiser l'utilisation de vos ressources dans les cibles.
Mettre vos cibles à l’échelle en fonction de votre demande
Pour mettre à l’échelle les cibles en fonction de votre demande, effectuez les actions suivantes pour votre configuration :
- Pour Amazon EC2, utilisez les groupes EC2 Auto Scaling avec une politique de mise à l’échelle pour les pics de trafic.
- Pour Amazon ECS, utilisez l’auto scaling de cluster.
Remarque : Lorsque vous invoquez une fonction Lambda, celle-ci est automatiquement mise à l'échelle.
Vérifier vos dépendances externes
Lorsqu'une application utilise une architecture de microservices, les dépendances externes, telles que les bases de données ou les API, affectent le temps de réponse cible.
Recherchez l’existence d’éventuels problèmes dans les dépendances externes courantes suivantes :
- Pour les bases de données Amazon Relational Database Service (Amazon RDS), vérifiez les métriques CloudWatch ReadLatency, WriteLatency et DatabaseConnections.
- Pour les files d'attente Amazon Simple Queue Service (Amazon SQS), vérifiez les métriques CloudWatch ApproximateAgeOfOldestMessage et NumberOfMessagesDelayed.
- Pour les compartiments Amazon Simple Storage Service (Amazon S3), vérifiez les métriques CloudWatch, FirstByteLatency, TotalRequestLatency, 4xxErrors et 5xxErrors.
- Pour les services d'authentification Amazon Cognito, vérifiez la métrique CloudWatch TokenRefreshSuccesses et vérifiez la présence d'erreurs ThrottlingException.
Pour déterminer la source d'un goulot d'étranglement de performances, effectuez les actions suivantes :
- Ajoutez un en-tête Server-Timing à vos requêtes HTTP pour mesurer la latence avec CloudWatch.
- Utilisez un service, tel qu'AWS X-Ray, pour implémenter une solution d'observabilité dans votre application.
- Réduisez la distance physique entre les ressources pour réduire la latence.
Utiliser l’optimiseur de calcul pour éviter de futurs problèmes
Utilisez l’optimiseur de calcul AWS pour obtenir des informations sur votre utilisation des ressources Amazon EC2, Amazon ECS et Lambda. L’optimiseur de calcul détecte lorsque votre utilisation de ressources est trop élevée pour vous aider à éviter les délais d'attente. Il fournit également des bonnes pratiques pour optimiser vos charges de travail.
Informations connexes
HTTP 504 : Délai de passerelle expiré
Comment puis-je résoudre les problèmes d'authentification dans mon Application Load Balancer ?
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- Réponse acceptéedemandé il y a 10 moislg...
- demandé il y a 2 anslg...
- demandé il y a un moislg...
- demandé il y a 6 moislg...
- AWS OFFICIELA mis à jour il y a 3 ans