Activar Keep-Alive y evitar el error 500

Todos escuchamos la palabra keep alive, pero que es realmente el keep alive?, la respuesta es sencilla, lo que se denomina como keep alive es simplemente una regla que aplicada a Apache permite la conexión persistente, explicado mas simple… permitimos a una conexión tcp en conexión HTTP que en vez de abrir una nueva conexión con cada nueva petición, esta sea única y permanente.

Aunque es altamente recomendable activar el keep-alive, no es oro todo lo que reluce. Explicamos ventajas y desventajas.

Ventajas de KeepAlive:

  • Mejora el tiempo de carga de nuestra web: el hecho de poder usar una misma conexión para transferir varios archivos, mejora el tiempo de carga de nuestra web y reduce la latencia, mejorando así la experiencia de usuario e incluso el SEO.
  • Reduce el uso de CPU: las páginas web tienen imágenes, archivos CSS, archivos JavaScript, etc… para transferir cada recurso nos haría falta abrir una conexión y después cerrarla, pero con KeepAlive activado no es necesario. Resumiendo, con KeepAlive evitamos abrir y cerrar conexiones constantemente, lo que reduce el uso de la CPU.

Desventajas de KeepAlive:

  • Aumenta el uso de memoria RAM: cuando activamos KeepAlive, las conexiones se mantienen abiertas para ser rehusadas, lo que implica tener más procesos Apache activos y por tanto, más consumo de memoria RAM. Si desactivamos KeepAlive, mantendremos menos procesos Apache activos y por lo tanto reducimos el uso de la memoria RAM.

Antes de activar el keep-alive debemos tomar buena nota de los recursos de nuestro servidor y que realmente no es necesaria:

  • Recursos de nuestro servidor: debemos conocer los recursos de RAM y CPU de los que dispone nuestro servidor. Si el factor que nos limita es la memoria RAM, entonces podemos plantearnos desactivar KeepAlive (valorando antes las desventajas que esto supone). Si el factor que nos limita es la CPU, activar KeepAlive es nuestra mejor opción.
  • Tipología de nuestra web: si tu web enlaza a múltiples recursos almacenados en el servidor (imágenes, archivos CSS, archivos javascript, etc), disponer la opción KeepAlive activada mejorará significativamente el tiempo de carga y la experiencia de usuario.
  • Tipología del tráfico: si tu web recibe sus visitas repartidas a lo largo del día, mantener KeepAlive activado es buena opción. Por otro lado, si tu web recibe grandes cantidades de tráfico en momentos puntuales, mantener la opción KeepAlive activada puede suponer un agotamiento de la memoria RAM.

Activar Keep-Alive y evitar el error 500 1

Como activar Keep-Alive y porque el error 500:

Realmente estoy sorprendido al ver que en múltiples webs donde se explica que para activar el keep-alive debes insertar en tu .htaccess la siguiente regla:

<IfModule mod_headers.c>
    Header set Connection Keep-Alive
    MaxKeepAliveRequests 100
    KeepAliveTimeout 3
</IfModule>

Nada más lejos de la realidad, de echo esa regla como tal no existe y lo que produce es un error 500.

Realmente lo debes activar y configurar en el archivo httpd.conf de Apache.

nano /etc/httpd/conf/httpd.conf

Descomentar para activar y configurar a tu gusto, mas o menos así:
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 100

Una vez guardado debes reiniciar apache:
# Debian, Ubuntu y derivados
sudo /etc/init.d/apache2 force-reload


# Centos, Fedora y derivados
/etc/init.d/httpd restart

Ahora debemos aplicar la regla en nuestro .htaccess, para que entienda que el keep-alive esta activo, copia y pega el código en tu .htaccess:
<IfModule mod_headers.c>
  Header set Connection Keep-Alive
</IfModule>

 

Ya lo tenemos activo y funcionando correctamente.

 

 

Agregar comentario