6 de Enero, 2010

Sacando brillo al servidor

Esta tarde he estado dándole un repaso a uno de los servicios más importantes de blackshell: la web.

Los cambios no se deben notar, vamos. Aunque un poco sí:

$ curl -I http://blackshell.usebox.net/
HTTP/1.1 200 OK
Connection: close
Date: Wed, 06 Jan 2010 22:58:08 GMT
Server: Cherokee/0.99.39 (UNIX)
X-Powered-By: PHP/5.3.1
Content-type: text/html

Las novedades son:

  • PHP 5.3.1: hacía tiempo que tenía pendiente actualizar a PHP5, y me venía manejando con 4.4.1 (+ parches).

    Es algo que no me gusta de PHP: dependes del soporte del distribuidor de tu sistema, porque el fabricante no mantienen ramas viejas, y no tienes más remedio que convivir con las incompatibilidades entre versiones.

    Esto lo sufrimos en el trabajo, con PHP 5.1.6 soportado por Red Hat, pero hay aplicaciones web que nos piden PHP 5.2 o superior, lo que resulta muy problemático... porque no está soportado por el distribuidor del sistema.

  • Cherokee Web Server: este ha sido un cambio bastante arriesgado, pero que creo que a medio plazo me va a aportar muchas satisfacciones.

    Aparte de Apache, he trabajado con thttpd y con lighthttpd. A Cherokee le tenía muchas ganas hace tiempo, y he decidido dar el salto.

La parte de PHP no ha sido muy traumática, pese a tener que pasar a de mod_php a FastCGI (para poder usar Cherokee), y a los cambios que tiene PHP5 (poco me ha afectado, porque la programación en mi blog es bastante sencilla).

Lo que tiene más miga es el paso a Cherokee, porque mi configuración de Apache era bastante elaborada (fruto del paso del tiempo :D).

Algunas cosas se han quedado por el camino apuntadas en el TODO, pero todo lo importante está funcionando y me está dando muy buenas sensaciones (la administración web es bastante versátil: he hecho cosas complejas sin leer una linea de documentación :P).

La única pega que me dejo, por ahora, es que no he conseguido que los encoders funcionen, y no estoy sirviendo las páginas ni con gzip ni con deflate, lo cual es un problema por el ancho de banda que tengo.

Seguiré investigando y comentando la jugada, que ya ha sido una tarde productiva :).

Actualización: nada, que soy un ceporro. Los encoders están bien, soy yo que estaba probando mal :P. El cambio que noto al servir la página puede ser debido al FastCGI, seguiré investigando.

Actualización 2: que hay que poner un login class al servidor que aumente el valor por defecto de descriptores de fichero permitidos (como ya me pasó con MySQL :S). Me he acordado por las malas esta tarde, cuando el servidor ha tenido un pico de carga.

¿Con Apache esto no pasa? No, porque usa un pool de procesos, así que cada proceso tiene un número de ficheros abiertos relativamente bajo (aunque a cambio pagamos más memoria/CPU, porque tenemos más procesos grandes corriendo).

Si no me equivoco, Cherokee es multi-hilo, así que todos los hilos parten del mismo proceso y comparten ese límite en el número de ficheros abiertos. Por defecto en la clase por defecto en OpenBSD es 128, demasiado bajo para la carga (tampoco mucha) que tenía esta tarde el servidor.

Actualización 3: ¡cuidado! Cherokee intentará usar los descriptores indicados en kern.maxfiles, y si su login class tiene un valor inferior, podemos tener problemas. Así que la clase para Cherokee tiene que tener de límite el máximo indicado por el kernel.

Sería genial que Cherokee nos dejara indicar a su arranque el número máximo de descriptores que queremos que use, sin pasarnos del máximo indicado en el kernel (claro).

Anotación por Juan J. Martínez, clasificada en: httpd, blog, cherokee, software libre.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: