lunes, 4 de agosto de 2008

BENCHMARK

Qué es??
Apache Benchmark (ab) es una herramienta para la evaluación comparativa de servidores web. Esta herramienta permite a los administradores llevar a cabo unas buenas pruebas de carga, simulando miles y miles de conexiones por segundo, antes de poner en marcha un servidor Web.
Esta aplicación viene por defecto con Apache2, es decir, no es necesario descargarla o instalarla.

Recomendaciones:
*Usa la misma configuración de hardware y kernel (SO) para todas las pruebas.
*Toma por lo menos de 3 a 5 lecturas y utiliza el mejor resultado.

Es importante realizar la pruebas con y sin KeepAlive (-k). Este parámetro permiten múltiples solicitudes en una misma conexión TCP. Cuando se hacen comparativas con benchmarks se tiene que hacer con equipos equivalentes y que todo sea lo más parecido posible y en las mismas condiciones, así se garantiza que los resultados sean lo mas parecido a la realidad.

El Objetivo de estas pruebas es ver cómo reaccionan los diferentes servidores web en situaciones extremas. Trabajaremos con algunas variables (-n, -k, -c)

Donde:
-n: Es el número de peticiones.
-k: Nos índica si la conexión se cierra o queda abierta para recibir las demás peticiones. Consume menos recursos y hace que el servidor responda más rápido.
-c: Número de concurrencias, solicitudes simultáneas. El valor máximo es 20000

NOTA: El sistema tiene un tope determinado de peticiones para algunos procesos. Es posible forzar el sistema utlizando el comando ulimit:
Esta función obtendrá o modificará algún límite para el proceso actual, en este caso, nos permite aumentar el número de peticiones y trabajar con números más grandes. Podemos obtener más información sobre estos procesos con ulimit -a:



Como podemos ver open file (-n) se encuentra en 10000, es decir que solo podemos enviar 10000 peticiones simultáneamente con ab (concurrencia), para forzar el sistema o cambiar este límite, debemos utilizar ulimit -n mas el valor que se desee, este valor llega a 1048576. Pero no es necesario llegar a este número (1048576) ya que por defecto la concurrencia en apache tiene un limite y es de 20000 peticiones simultáneamente. Sin embargo lo haremos a manera de ejemplo:
ulimit -n (número de 0 a 1048576)
Esto queda así:
Nos enfocaremos en los tiempo de respuestas (Time per request) que la prueba ab nos arroje. Y con éste valor más el número de peticiones se crearán unas gráficas comparativas entre los diferentes servidores web.
TIPS: Las pruebas se realizan con 3 servidores web montados en una sola máquina, estos servicios se encuentran corriendo en los puertos 80, 81 y 82.
Es importante que la longitud del documento (Document Length), es decir, el tamaño del index sea el mismo en los 3 servicios. En este caso utilizamos un pequeño index de 29 bytes.
Tenga en cuenta el / al terminar la URL

Prueba 1º

Detalles:
Procesador: Mobile AMD Sempron 1,81 GHz
Memoria: 512 MB
S.0: Debian GNU/Linux 4.0 "Etch"
Apache Benchmark Version 2.0.40-dev.
Versiones de los servicios web:
Apache 2.2.3 lighttpd-1.4.13Cherokee 0.5.5

Conclusiones Personales: En esta gráfica podemos ver claramente el desempeño de los servidores web. Inicialmente vemos algo muy variable.Vemos un aumento en los tiempos de respuesta de los 3 servidores, estas variaciones se dan en los rangos del 50 al 2000, después de las 2000 peticiones los 3 servidores se estabilizan y los resultados en los tiempos de respuestas tambien.Cabe notar que los tiempos de respuestas entre ellos no son los mismos. Podemos ver claramente que el tiempo de respuesta del servidor apache es muy alto, en pocas palabras, se demora mucho procesando una petición, cosa que no ocurre con el servidor web cherokee. Este servidor muestra un mejor desempeño incluso frente al servidor Lighttpd. Recordemos que esta prueba es muy exigente ya que en cada petición se debe abrir y cerrar la conexión.

Prueba 2º
Detalles:
Procesador: Mobile AMD Sempron 1,81 GHz
Memoria: 512 MB
S.0: Debian GNU/Linux 4.0 "Etch"
Apache Benchmark Version 2.0.40-dev.
Versiones de los servicios web:
Apache 2.2.3 lighttpd-1.4.13 Cherokee 0.5.5


Conclusiones Personales: Esta prueba es muy parecida a la primera, solo que para esta prueba se utilizó la variable -k que nos índica que la conexión queda abierta para recibir las demás peticiones, podemos ver que los tiempos de respuestas son mas favorables para los tres servidores ya que esta variable hace que los servidores consuman menos recursos y como consecuencia responden más rápido.

Prueba 3º
Detalles:
Procesador: Mobile AMD Sempron 1,81 GHz
Memoria: 512 MB
S.0: Debian GNU/Linux 4.0 "Etch"
Apache Benchmark Version 2.0.40-dev.
Versiones de los servicios web:
Apache 2.2.3
lighttpd-1.4.13
Cherokee 0.5.5

Conclusiones Personales: En nuestra tercera prueba podemos observar y concluir que el servidor web Cherokee responde mejor cuando se le aplica mayor carga, es decir, cuando tienes mas peticiones que procesar. Estas fueron unas pequeñas pruebas que se realizaron a los servidores web para tener una idea propia del rendimiento de cada uno. De manera muy personal los invito a que utilicen esta aplicación (Apache Benchmark) y realicen sus propias pruebas, recordemos que el resultado variará de acuerdo a la capacidad del computador, de las versiones que utilice en los servidores, del sistema operativo, entre otros.

Hasta Pronto