Optimisez les paramètres de vidange de la connexion de l'équilibreur de charge pour Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Optimisez les paramètres de vidange de la connexion de l'équilibreur de charge pour Amazon ECS

Pour permettre l'optimisation, les clients maintiennent une connexion permanente au service de conteneurs. Cela permet aux demandes ultérieures de ce client de réutiliser la connexion existante. Lorsque vous souhaitez arrêter le trafic vers un conteneur, vous devez en informer l'équilibreur de charge. L'équilibreur de charge vérifie régulièrement si le client a fermé la connexion Keep Alive. L'ECSagent Amazon surveille l'équilibreur de charge et attend que celui-ci indique que la connexion Keep Alive est fermée (la cible est dans un UNUSED état).

La durée pendant laquelle l'équilibreur de charge attend pour faire passer la cible à l'UNUSEDétat correspond au délai de désenregistrement. Vous pouvez configurer le paramètre d'équilibreur de charge suivant pour accélérer vos déploiements.

  • deregistration_delay.timeout_seconds: 300 (par défaut)

Lorsque vous disposez d'un service dont le temps de réponse est inférieur à 1 seconde, définissez le paramètre sur la valeur suivante pour que l'équilibreur de charge n'attende que 5 secondes avant de rompre la connexion entre le client et le service principal :

  • deregistration_delay.timeout_seconds : 5

Note

Ne définissez pas la valeur sur 5 secondes lorsqu'un service comporte des demandes de longue durée, telles que des téléchargements de fichiers lents ou des connexions de streaming.

SIGTERMréactivité

Amazon envoie d'ECSabord un SIGTERM signal à la tâche pour indiquer que l'application doit se terminer et s'arrêter. Amazon ECS envoie ensuite un SIGKILL message. Lorsque les applications ignorent leSIGTERM, le ECS service Amazon doit attendre d'envoyer le SIGKILL signal pour mettre fin au processus.

Le temps d'ECSattente d'Amazon avant d'envoyer le SIGKILL message est déterminé par l'option d'ECSagent Amazon suivante :

  • ECS_CONTAINER_STOP_TIMEOUT: 30 (par défaut)

    Pour plus d'informations sur le paramètre de l'agent de conteneur, consultez Amazon ECS Container Agent on GitHub.

Pour accélérer le délai d'attente, définissez le paramètre de l'ECSagent Amazon sur la valeur suivante :

  • ECS_CONTAINER_STOP_TIMEOUT : 2

    Si votre application prend plus d'une seconde, multipliez la valeur par 2 et utilisez ce nombre comme valeur.

Dans ce cas, Amazon ECS attend 2 secondes que le conteneur s'arrête, puis Amazon ECS envoie un SIGKILL message lorsque l'application ne s'est pas arrêtée.

Vous pouvez également modifier le code de l'application pour capter le SIGTERM signal et y réagir. Voici un exemple dans JavaScript :

process.on('SIGTERM', function() { server.close(); })

Ce code oblige le HTTP serveur à arrêter d'écouter les nouvelles demandes, à terminer de répondre à toutes les demandes en cours, puis le processus Node.js s'arrête car la boucle d'événements n'a rien à voir. Cela étant, s'il ne faut que 500 ms au processus pour terminer ses demandes en vol, il se termine plus tôt sans avoir à attendre la fin du délai d'arrêt et à recevoir un. SIGKILL