Je souhaite utiliser une instance exécutant Apache ou NGINX comme serveur backend pour Elastic Load Balancing (ELB). Quels sont les paramètres à utiliser pour des performances optimales ?

Les meilleurs paramètres pour un équilibreur de charge dépendent de votre cas d'utilisation. Pour des performances optimales, vous devez analyser les temps de réponse de votre application backend et les exigences de vos clients.

Si le backend exécute Apache ou NGINX, les paramètres suivants peuvent influencer la gestion des demandes.
Remarque : Après avoir mis à jour votre configuration, redémarrez Apache ou NGINX.

Délai d'attente d'en-tête de client (Timeout dans Apache ; client_header_timeout dans NGINX)
Définissez une valeur de délai d'attente pour votre application supérieure à la valeur de délai d'inactivité de l'équilibreur de charge pour vous assurer que ce dernier ferme correctement les connexions inactives. Si le serveur backend ferme une connexion sans en notifier l'équilibreur de charge, une erreur 504 peut se produire.

Paramètres keep-alive (KeepAlive dans Apache ; keepalive_disable dans NGINX)
Activez les paramètres keep-alive pour réduire l'utilisation de l'UC et améliorer les temps de réponse. L'activation des paramètres keep-alive permet à l'équilibreur de charge de ne pas établir une nouvelle connexion TCP pour chaque demande HTTP.

Délai d'attente keep-alive (KeepAliveTimeout dans Apache ; keepalive_timeout dans NGINX)
Lorsque l'option keep-alive est activée, choisissez un délai d'attente keep-alive plus long que le délai d'attente de l'application.

Délai d'attente de lecture (RequestReadTimeout dans Apache ; client_header_timeout et client_body_timeout dans NGINX)
Définissez des délais d'attente de lecture qui correspondent aux temps de réponse de votre application, de sorte que votre équilibreur de charge maintienne la connexion ouverte assez longtemps pour recevoir à la fois l'en-tête et le corps de la demande.

Avertissement : Vérifiez que la valeur du délai d'inactivité de l'équilibreur de charge est inférieure au délai d'attente du backend.

Nombre maximal de demandes keep-alive (MaxKeepAliveRequests dans Apache ; keepalive_requests dans NGINX)
Cette option permet de définir le nombre de demandes traitées par une seule connexion TCP lorsque les paramètres keep-alive sont activés. Pour une utilisation optimale des ressources, définissez le nombre maximal de demandes keep-alive à 100 ou plus.

Paramètre AcceptFilter (AcceptFilter dans Apache ; accept_filter dans NGINX)
Le paramètre AcceptFilter, activé par défaut, indique à Apache d'utiliser l'option TCP_DEFER_ACCEPT pour les connexions. Dans ce cas, le socket TCP est dans un état « à moitié ouvert », où l'équilibreur de charge croit que la connexion est établie alors qu'elle ne l'est pas au niveau de l'instance backend. Les connexions dans un état à moitié ouvert sont plus courantes dans des équilibreurs de charge à faible volume, où les connexions ont le temps de vieillir avant d'être utilisées.

Journalisation
Activez l'option %{X-Forwarded-For}i de sorte qu'Apache affiche l'en-tête x-forwarded-for ELB dans ses journaux pour chaque demande. Cet en-tête contient l'adresse IP du client d'origine. L'option %D ajoute le délai nécessaire pour terminer chaque demande envoyée aux journaux d'accès :

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined

Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 19/07/2016

Date de mise à jour : 31/07/2018