Catégories

KeepAlive TCP avec Apache HTTPd « mod_proxy »

Un pare-feu entre votre frontal GNU/Linux / Apache HTTPd (avec mod_proxy) et votre serveur applicatif (par exemple Apache Tomcat), coupe les connexions HTTP ou AJP inactives au bout d’un certain temps ? Une solution consiste à activer le TCP keep alive; voici une petite explication:

Commencez par ajouter l’option keepalive à votre configuration d’Apache HTTPd, par exemple à chaque directive ProxyPass:

ProxyPass /appli/ ajp://server.localdomain:8009/appli/ keepalive=On

Contrairement à ce que l’on pourrait croire, cette option n’active pas la fonctionnalité dans Apache HTTPd mais elle va demander au système d’activer les KeepAlive TCP; il faut donc être sûr que les valeurs du système, en l’occurrence le noyau Linux, soient suffisantes:

Les valeurs courantes peuvent être obtenues avec la commande:

# sysctl -a | grep ^net.ipv4.tcp_keepalive
net.ipv4.tcp_keepalive_intvl = 120
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_keepalive_time = 2700

Si les paramètres ne correspondent pas à votre besoin, ajoutez-les au fichier /etc/sysctl.conf et appliquez-les avec la commande:

# sysctl -p

Détail des paramètres:

tcp_keepalive_time est le délai à partir duquel les KeepAlive sont envoyés et doit donc être inférieur au délai d’expiration des connexions du pare-feu (timeout).

tcp_keepalive_intvl est l’interval entre les envois de KeepAlive, et doit logiquement être inférieur à tcp_keepalive_time; il doit être assez court pour avoir un comportement réactif sur les connexions coupées, en corrélation avec le paramètre tcp_keepalive_probes.

tcp_keepalive_probes est le nombre d’envois sans réponse pour considérer qu’une connexion est coupée; l’information est alors remontée à l’application.

Références:
http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

Faire un commentaire

 

 

 

Vous pouvez utiliser ces tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" escaped="">