miércoles, 9 de septiembre de 2009

No sólo de Apache2 vive el hombre...




A raíz de una serie de problemas en el servidor VPS que aloja www.permuy.org, www.comunidadeozulo.org y demás, decido prescindir de Apache2. La máquina no está sobrada de RAM, y Apache2 se encarga de contribuir a ello, consumiendo nada más arrancas el servicio hasta 60Mb! Si no lo veo no lo creo!

Me habían recomendado lighttpd, pero en realidad, siempre había leído mejores críticas en cuanto a velocidad se refiere de cherokee. Por lo que he podido comprobar(a ojo) el consumo de memoria cherokee es mas bajo que el de Apache. Pero en velocidad, ni punto de comparación. Al final sigo con Apache en www.permuy.org, pero en casa y en la oficina he migrado ya ha cherokee.

¿Qué me ha gustado del Cherokee Project?
  • Facilidad de instalación: wget, configure, make y make install.
  • No tiene dependencias externas, salvo las librerías de C, claro.
  • Soporta: FastCGI, SCGI, PHP, CGI, SSI, TLS and SSL.
  • Muy rápido, tanto para servir páginas como para reiniciar el servicio.
  • Administración muy sencilla vía web a través de cherokee-admin.
  • La documentación está muy bien estructurada y muy bien redactada.
  • En GNU/Linux funciona de maravilla.
Pruebas de rendimiento.

He realizado dos pruebas con ab en Apache 2.2.x y Cherokee 0.99.24 y la verdad es que el segundo "se come" al primero. La máquina en cuestión es:
S.O : Ubuntu 9.04
Kernel : Linux alberto 2.6.28-15-generic
RAM: 1GB DDR2 533
Procesador: Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz

Prueba 1
Criterio: 1000 peticiones y concurrencia = 10
Resultados para Apache 2.2.11

Server Software: Apache/2.2.11
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 354 bytes

Concurrency Level: 10
Time taken for tests: 0.272 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1002
Total transferred: 649296 bytes
HTML transferred: 354708 bytes
Requests per second: 3670.06 [#/sec] (mean)
Time per request: 2.725 [ms] (mean)
Time per request: 0.272 [ms] (mean, across all concurrent requests)
Transfer rate: 2327.11 [Kbytes/sec] received

Resultados para Cherokee 0.99.24

Server Software: Cherokee/0.99.24
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 293 bytes

Concurrency Level: 10
Time taken for tests: 0.219 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1004
Total transferred: 544168 bytes
HTML transferred: 294172 bytes
Requests per second: 4557.68 [#/sec] (mean)
Time per request: 2.194 [ms] (mean)
Time per request: 0.219 [ms] (mean, across all concurrent requests)
Transfer rate: 2422.01 [Kbytes/sec] received


Tanto la tasa de transferencia con el tiempo empleado en realizar las peticiones son menores, si bien es cierto que con 1000 peticiones pocas conclusiones se pueden sacar, de momento Apache 0 - 1 Cherokee. Ahora vamos con la prueba 2, con 100000 peticiones y concurrencia = 10.

Prueba 2
Criterio: 100000 peticiones y concurrencia = 10
Resultados para Apache 2.2.11

Server Software: Apache/2.2.11
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 354 bytes

Concurrency Level: 10
Time taken for tests: 19.781 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Non-2xx responses: 100003
Total transferred: 64801944 bytes
HTML transferred: 35401062 bytes
Requests per second: 5055.42 [#/sec] (mean)
Time per request: 1.978 [ms] (mean)
Time per request: 0.198 [ms] (mean, across all concurrent requests)
Transfer rate: 3199.23 [Kbytes/sec] received

Resultados para Cherokee 0.99.24

Server Software: Cherokee/0.99.24
Server Hostname: localhost
Server Port: 80
Document Path: /drupal2
Document Length: 293 bytes
Concurrency Level: 10
Time taken for tests: 7.734 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Non-2xx responses: 100000
Total transferred: 54200000 bytes
HTML transferred: 29300000 bytes
Requests per second: 12930.18 [#/sec] (mean)
Time per request: 0.773 [ms] (mean)
Time per request: 0.077 [ms] (mean, across all concurrent requests)
Transfer rate: 6843.90 [Kbytes/sec] received

Llama mucho la atención que mientras Apache2 es capaz de "responder" poco más de 5000 peticiones por segundo, cherokee llega casi a las 13.000. Ni hablar del tiempo empleado, Apache a tardado más de 11 segundos! 11 segundo es mucho tiempo, pero mucho mucho! ¿Algo más?
Enhorabuena a Alvaro Lopez, por su gran trabajo realizado desde 2001.

No hay comentarios: