Grande question!
Traditionnellement, KeepAlive était une bonne chose car il réduit considérablement la surcharge TCP d'une charge de page globale, où de nombreuses demandes (comme toutes les images, css, js) sont traitées à partir d'un seul serveur. Si votre page contient 85 éléments, cela représente 85 poignées de main TCP supplémentaires à trois voies, et la latence s'additionne. Il y a de nombreuses années, avec des connexions Internet plus lentes, cela était beaucoup plus important qu'aujourd'hui, bien que cela reste tout à fait pertinent pour les navigateurs mobiles ou toutes les connexions à latence lente / élevée.
L'impact mentionné ici concerne cependant la durée pendant laquelle ces connexions TCP sont maintenues ouvertes et si cela peut rapidement épuiser vos processus enfants Apache. La plupart des valeurs par défaut que j'ai vues sont:
KeepAliveTimeOut 15
MaxClients 256
Cela signifie que si 256 navigateurs différents demandaient du contenu dans les mêmes 15 secondes, le 257e client devrait attendre que les connexions disparaissent. Pas bon - ce n'est pas du tout un trafic particulièrement élevé, donc cela explique ces conseils. Cela peut également conduire à augmenter le nombre de MaxClients, ce qui pourrait consommer beaucoup de mémoire. Lorsque j'utilise KeepAlives, je règle généralement KeepAliveTimeout sur 2 ou 3 secondes; c'est le temps d'inactivité entre les demandes plutôt que le temps entier pour toutes les demandes.
Si vous utilisez KeepAlive, il y a un équilibre entre KeepAliveTimeout, MaxClients et les ressources du serveur. Pour vous aider, un «service httpd / apache2 fullstatus» vous montrera le nombre de connexions utilisées par KeepAlives à tout moment - indiqué par le «K» majuscule.
Pour Magento, je ne pense pas que vous ayez besoin de KeepAlives.
Ce que vous devriez être en train de faire si vous avez un trafic très élevé site Enterprise, utilise un CDN pour votre contenu statique.
Si vous vendez dans plusieurs pays, l'utilisation d'un CDN non seulement accélérera le chargement global des pages pour vos clients (ce qui est bien) mais réduira massivement la bande passante arrivant sur votre serveur. Les paramètres sous Système> Config> Web> [Un] sécurisé rendent très simple l'intégration de n'importe quel CDN pour les médias, la peau et JavaScript. Ce sera la majeure partie des demandes HTTP réelles, et en bonus, vous pouvez utiliser différents enregistrements DNS pour paralléliser les téléchargements entre les noms d'hôte. Si vous le faites correctement, ces demandes toucheront à peine votre serveur, il n'y a donc plus de réel besoinpour KeepAlive. Dans ce cas, vous devez désactiver KA; nous ne voulons pas maintenir la connexion en direct lorsque nous savons que le reste du contenu est servi depuis un autre endroit. Si vous voulez une recommandation CDN autonome: CloudFlare est fantastique, et vous obtenez même SSL avec le package gratuit.
Lorsque vous utilisez un CDN comme celui-ci, ou si vous utilisez tout autre type de proxy inverse (comme Varnish), vos KeepAlives HTTP Apache sont fondamentalement hors de propos.
Pour résumer, je conviens que vous devriez probablement désactiver KeepAlive pour éviter de saturer vos processus Apache sous charge, mais certainement utiliser un CDN ou un autre proxy inverse pour les actifs, pour garder vos chargements de page aussi rapides que possible.