viernes, 22 de agosto de 2008

Cherokee vs Apache2

Antes de empezar, visita los siguientes enlaces, donde encontrarás algunas recomendaciones antes de comenzar con la prueba:

Desde la red interna (sena):

http://10.3.240.246/wiki/BenchmarkAspectosImportantes

Desde la red externa (internet):


http://wiki.red-sena.net/BenchmarkAspectosImportantes


Desde la red interna (sena):

http://10.3.240.246/wiki/ErrorLimiteConcurrenciaPruebaBenchmark

Desde la red externa (internet):

http://wiki.red-sena.net/ErrorLimiteConcurrenciaPruebaBenchmark

Benchmark utilizado para la prueba

ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Caracteríticas del computador donde se encuentra alojada la página web:

Compaq nx9010
Procesador Intel Pentium 4 a 2.8 GHz
Memoria RAM de 512 MB
Disco duro de 60 GB
Sistema opertivo Linux Debian Etch 4.0
Cherokee 0.5.5
Apache2 2.2.3


Ejemplos de comandos usados:

katy:/etc/cherokee# ab -n700 -c300 -k http://127.0.0.1/

katy:/etc/apache2# ab -n700 -c300 -k http://127.0.0.1/



Aca le estoy enviando 700 requerimientos al servidor en grupos de 300 en 300 requerimientos al mismo tiempo. Lo que podriamos interpretar como si 300 usuarios le estan pidiendo abrir 700 requerimientos y le digo que que mantenga abierto el socket (-k).


Lo anterior lo realice para las pruebas completas, manteniendo constante C=300 y diciéndole siempre que mantenga abierto el socket (-k)



Prueba de rendimiento Cherokee

Cherokee llego al límite cuando -n valia 1700000 y observe lo siguiente:

katy:/etc/cherokee# ab -n1700000 -c300 -k  http://127.0.0.1/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 200000 requests
Completed 400000 requests
Completed 600000 requests
Completed 800000 requests
apr_socket_recv: Connection reset by peer (104)
Total of 996507 requests completed
katy:/etc/cherokee#



Despues que llego a su límite, reinicie el servicio y repetí la prueba, pero esta vez sin -k, osea que le estoy diciendo que cierre el socket.

Obtuve los siguientes resultados:


Gráfica 1 Cherokee: Número de requerimientos (n) vs 100% Longest Request




En esta gráfica observamos lo siguiente:

eje x: -n= Número de requerimientos
eje y: Tiempo en ms que demora en cargar una página al 100%
-c= Concurrencia, que siempre tuvo un valor de 300
Línea azul CON -k
Línea roja SIN -k


Los resultados eran los esperados, pues al decirle al servidor web que cerrara el socket (línea roja), le estaba diciendo que para cada requerimiento debia establecer una nueva conexión, lo que hacia mas lento el tiempo de respuesta. Por lo tanto, para este caso, el servidor es mas eficiente cuando usamos -k (mantener el socket abierto), pues asi él no tiene que establecer una nueva conexión para cada requerimiento.



Gráfica 2 Cherokee: Número de requerimientos (n) vs Request per second




A continuación, realizaré una prueba de rendimiento a los servidores web Cherokee y Apache2



eje x: -n= Número de requerimientos
eje y: Número de requerimientos por segundo
-c= Concurrencia, que siempre tuvo un valor de 300
Línea azul CON -k
Línea roja SIN -k


En el gráfico anterior podemos observar que cuando usamos -k el servidor es capaz de procesar mas requerimientos por segundo, pues como lo mencione anteriormente, no hay que establecer una nueva conexión para cada requerimiento, lo que hace mas rápido el proceso.

El servidor Cherokee es un servidor muy estable, que sometido a fuertes "presiones", es capaz de responder muy satisfactoriamente, incluso mejor que el Apache2, el cual observaremos a continuación:



Prueba de rendimiento Apache2


Observaciones

Las pruebas se realizaron con las mismas condiciones técnicas.

Se uso el mismo rango de valores que se utilizo para realizar la prueba de Cherokee.

Sólo se mostrará un gráfico (Número de requerimientos (n) vs Request per second).

El servidor web Apache2, llego a su límite cuando n valia 800.000

C=300



Gráfica 3 Apache2: Número de requerimientos (n) vs Request per second




Enlaces de interes



Apache2, apesar de ser uno de los servidores web mas usados actualmente, no es el mas eficiente, pues tiende a ser mas lento y no responde muy bien frente a fuertes "presiónes" como lo hace el Cherokee.



Gráfica 4: Comparación Cherokee vs Apache2


Observación:

Series con -k









Conclusiones


El servidor web Cherokee puede llegar a comportarse mejor frente a una gran avalancha de requerimientos, se recomienda usar -k para una mejor respuesta.

Cherokee puede procesar un mayor número de requerimientos que Apache2 y en un menor tiempo.

Apache2 es un servidor web muy usado, pero eso no quiere decir que sea el mejor.

1 comentarios:

NiTRoX dijo...

hola: oye tengo una duda y creo que me puedes ayudar.

Queremos armas un server p2p pero de prueba, por desgracia tiene que ser con windows server 2000.
Pero el tema es modificar el limite que tiene para archivos abiertos, sabes de algun parche para modificarf esto?