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