¿Habilitar KeepAlive o no?

9

¿Cuál es el consenso sobre que KeepAlive esté en un sitio de Magento de alto tráfico? Parece que la mayoría de las personas recomiendan tenerlo encendido, pero luego Magento afirma que lo deja en su Maximización del rendimiento y la escalabilidad con Magento Enterprise Edition, afirman

"Cuando un servidor web está bajo una gran carga, mantener conexiones persistentes se vuelve desventajoso, por lo tanto, la directiva KeepAlive siempre debe estar deshabilitada"

Pensamientos?

Jeremy Miller
fuente

Respuestas:

4

Gran pregunta!

Tradicionalmente, KeepAlive era algo bueno porque reduce significativamente la sobrecarga TCP de una carga de página general, donde muchas solicitudes (como todas las imágenes, css, js) se atienden desde un servidor. Si su página tiene 85 activos, son 85 apretones de manos TCP adicionales de tres vías, y la latencia se suma. Hace muchos años, con conexiones de Internet más lentas, esto era mucho más importante de lo que es ahora, aunque todavía es bastante relevante para los navegadores móviles o cualquier conexión de latencia alta / lenta.

Sin embargo, el impacto mencionado aquí se relaciona con la cantidad de tiempo que esas conexiones TCP se mantienen abiertas, y si eso podría agotar rápidamente sus procesos secundarios Apache. La mayoría de los valores predeterminados que he visto son:

KeepAliveTimeOut 15
MaxClients 256

Esto significa que si tuviera 256 navegadores diferentes que solicitaran contenido en los mismos 15 segundos, entonces el cliente número 257 tendría que esperar a que se desconectaran las conexiones. No es bueno, esto no es un tráfico especialmente alto, por lo que explica ese consejo. También puede llevar a uno a aumentar los MaxClients para hacer frente, lo que podría consumir mucha memoria. Cuando uso KeepAlives, generalmente configuro KeepAliveTimeout en 2 o 3 segundos; es el tiempo de inactividad entre solicitudes en lugar del tiempo completo para todas las solicitudes.

Si está utilizando KeepAlive, existe un acto de equilibrio entre KeepAliveTimeout, MaxClients y los recursos del servidor. Para ayudar con eso, un 'servicio httpd / apache2 fullstatus' le mostrará el número de conexiones que KeepAlives está utilizando en cualquier momento, indicado con la 'K' mayúscula.

Sin embargo, para Magento, no creo que necesites KeepAlives.

Lo que debe hacer si tiene un sitio Enterprise de mucho tráfico es usar un CDN para su contenido estático.

Si está vendiendo en varios países, el uso de un CDN no solo acelerará la carga general de la página para sus clientes (lo cual es bueno) sino que reducirá enormemente el ancho de banda que llega a su servidor. La configuración en Sistema> Configuración> Web> [Des] seguro hace que sea realmente trivial integrar cualquier CDN para los medios, la máscara y JavaScript. Esta será la mayor parte de las solicitudes HTTP reales y, como beneficio adicional, puede usar diferentes registros DNS para paralelizar las descargas entre los nombres de host. Si lo está haciendo bien, esas solicitudes apenas tocarán su servidor, por lo que ya no hay ninguna necesidad realpara KeepAlive. En este caso, debe deshabilitar KA; no queremos mantener la conexión en vivo cuando sabemos que el resto del contenido se está sirviendo desde otro lugar. Si desea una recomendación independiente de CDN: CloudFlare es fantástico e incluso obtiene SSL con el paquete gratuito.

Cuando usa un CDN como este, o si está usando cualquier otro tipo de proxy inverso (como Varnish), sus Apache HTTP KeepAlives son básicamente irrelevantes.

Para resumir, estoy de acuerdo en que probablemente debería deshabilitar KeepAlive para evitar saturar sus procesos de Apache bajo carga, pero definitivamente usar un CDN u otro proxy inverso para los activos, para mantener sus cargas de página lo más ágiles posible.

Will Parsons
fuente
1
Keepalives siguen siendo relevantes durante un origen de extracción de un CDN. Habilitar / deshabilitar no debe tomarse a la ligera y debe probarse a fondo. Yo recomendaría reducir las solicitudes, adelgazar los activos incluso antes de considerar una CDN: mal configurada, pueden hacer que las tiendas sean más lentas que rápidas.
Ben Lessani - Sonassi
¿Cómo configurar este sistema local de configuración de keepalive para el servidor XAMPP?
bhavin thummar