Apache 2 vs Lighttpd 1.x: Optimizando el servidor web

0 Comments

Caso de Estudio: Como optimizar los servicios web

Durante muchos años trabaje con el servidor web Apache hasta la version 2.2.4-3.

Hace un par de semanas un cliente me solicito asesoria para comprar un nuevo hardware para otro servidor web, ya que el actual no tenia suficiente memoria para soportar los sitios web e intranet sobre Apache con MySQL.

Al analizar su caso me di cuenta que estaba recibiendo un promedio de 5mil visitas, totalizando unos 15mil hits diarios. El acceso a las paginas localmente era de por si bastante lento, ya que el LAMP estaba utilizando a toda su capacidad el swap y la base de datos no se daba a basto con las consultas.

Lo primero fue optimizar las bases de datos, quitando toda la basura y recreando los indices. Esto nos libero 12% de la memoria, la cual el Apache 2 rapidamente consumio. Con este comportamiento decidi probar con un servidor web mas liviano, la respuesta : lighttpd.

El problema con apache es que al iniciar carga todos los modulos que contiene, y muchos de estos nunca llegan a ser utilizados por nuestras aplicaciones. Claro que se le pueden quitar dichos modulos, pero hay algunos que son criticos para el funcionamiento de nuestra aplicacion, como libapache2-mod-php.

En el caso del modulo de php, este es cargado a memoria y es llamado para cada request que el servidor recibe, digamos que un usuario ingresa a nuestro sitio y al cargar tiene que ir por las imagenes del mismo, apache llama a PHP con todas sus librerias para esta accion. Esto satura la memoria del servidor rapidamente.

La solucion frente a mod-php es fast-cgi, este modulo solamente carga las librerias de PHP necesarias para cada accion desde sus procesos demonizados, y mantiene dichos procesos para ser reusados por multiples peticiones. Esto resuelve el consumo de ciclos del CPU al ahorrase la creacion de nuevas instancias o procesos de CGI.

Al final, la instalacion del lighttpd con soporte de PHP via Fast-cgi demostro una mejora instantanea en la respuesta de los sitios. Anteriormente cada pagina tardaba en cargar de 5 a 30 segundos, ahora eran desplegadas en menos de 3.

La utilizacion de la memoria bajo al 50%, dandonos espacio para crecer.

Todo esto le quita carga al procesador, obteniendo asi una respuesta mas rapida de las consultas a las bases de datos en MySQL

Ahora veamos el howto de Como instalar lighttpd en nuestro servidor Linux.

Deja tus preguntas o comentarios