Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

↗ Cómo medir el rendimiento de un servidor Web con Apache Benchmark

↗ Cómo medir el rendimiento de un servidor Web con Apache Benchmark

Medir el rendimiento de un servidor Web es muy sencillo gracias a herramientas tanto gratuitas como de pago que existen en el mercado. En este caso, vamos a utilizar la herramienta gratuita Apache Benchmark para medir el rendimiento de un servidor Web Apache. La operativa es exactamente la misma, independientemente del servidor web que tengamos instalado: Apache, Nginx, Lighttpd, IIS...

Seguid leyendo si queréis aprender como medir y y sacar gráficas del rendimiento de vuestro servidor web...

 

 

¿QUÉ ES APACHE BENCHMARK?

Apache Benchmark (ab) es una herramienta para medir el rendimiendo de un servidor web HTTP/HTTPS. Está diseñado para dar una idea aproximada de como funciona el servidor Web con la configuración aplicada en ese momento. AB muestra cuantas peticiones por segundo es capaz de servir el servidor Web y cuantas rechaza o no es capaz de procesar.

URL: http://httpd.apache.org/docs/2.0/programs/ab.html

 

 

1.- REQUERIMIENTOS

Los únicos requerimientos para seguir este tutorial son los siguientes:

  • Apache Server, Nginx Server, Lighttpd Server IIS Server con el que hacer pruebas
  • Equipo con GNU/Linux Debian o Ubuntu (recomendado)
  • Conexión a Internet si queremos probar host remoto (recomendado)

 

 

2.- INSTALACIÓN DE APACHE BENCHMARK

El ejecutable de Apache Benchmark viene dentro del paquete apache2-utils. Para instalarlo (si no lo tenéis instalado) basta con instalarlo de la siguiente forma en un equipo con GNU/Linux Debian/Ubuntu. Si tenéis un equipo con otro sistema operativo, consultad en Google como instalar apache2-utils:

raul@localhost:~$ sudo apt-get install apache2-utils

 

  

3.- LANZAR UN TEST CON APACHE BENCHMARK

Los parámetros más habituales a la hora de lanzar un test con Apache Benchmark son: el número de peticiones y la concurrencia de las peticiones. En el siguiente ejemplo, se puede ver que se realizarán un total de 1000 peticiones en bloques de 50 en 50 a la web https://www.meneame.net. Al ser una web con HTTPs, debemos poner el parámetro -f ALL. Recordad también poner la / al final de la URL.

raul@localhost:~$ ab -n 1000 -c 50 -f ALL https://www.meneame.net/

 

  

La salida del informe generado por Apache Benchmark es el siguiente, y remarco en negrita los campos más importantes a analizar y/o tener en cuenta.

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.meneame.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software: nginx
Server Hostname: www.meneame.net
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path: /
Document Length: 239558 bytes

Concurrency Level: 50
Time taken for tests: 395.639 seconds
Complete requests: 1000
Failed requests: 552
(Connect: 0, Receive: 0, Length: 552, Exceptions: 0)
Total transferred: 239887072 bytes
HTML transferred: 239536072 bytes
Requests per second: 2.53 [#/sec] (mean)
Time per request: 19781.941 [ms] (mean)
Time per request: 395.639 [ms] (mean, across all concurrent requests)
Transfer rate: 592.12 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 880 5888 2824.4 5179 22790
Processing: 6275 13651 4410.7 12633 46170
Waiting: 180 3137 1722.9 2913 23888
Total: 9121 19540 5788.5 18403 58027

Percentage of the requests served within a certain time (ms)
50% 18403
66% 20616
75% 22380
80% 23475
90% 27163
95% 30554
98% 34890
99% 38150
100% 58027 (longest request)

  

 

Recomiendo mínimo 3 test para sacar conclusiones

 

 

Existe la opción de guardar los datos en una tabla html. Para guardar el resultado en HTML, hay que ejecutar el comando como muestro a continuación, redireccionando la salida a un fichero resultados.html y añadiendo un flag -w:

raul@localhost:~$ ab -n 1000 -c 50 -f ALL -w https://www.meneame.net/ > resultados.html

 

  

En la siguiente imagen se puede ver el resultado del test generado en un navegador Web como Mozilla Firefox, Google Chrome, etc...

Apache BenchmarkRendimiento en informe HTML

 

 

 

 

4.- GRAFICAR LOS DATOS CON GNUPLOT

Una de las opciones que llama mas la atención, es poder graficar los resultados de Apache Benchkmark y así poder adjuntarlos en informes, páginas webs, etc ... y que tanto llaman a los directivos y gente de administración. 

Para poder convertir los resultados a una imagen con los datos en unos ejes de coordenadas X e Y, es necesario hacer uso de una herramienta llamada GNUPlot.

Para instalar GNUPlot en un sistema GNU/Linux Debian/Ubuntu hay que ejecutar el siguiente comando (si tenéis otro sistema operativo, consultad en Google como instalarlo):

raul@localhost:~$ sudo apt-get install gnuplot

 

 

Para guardar los resultados de Apache Benchmark y poderlos convertir con GNUPlot, es necesario añadir un flag para que los datos sean compatibles con el formato de GNUPlot, por tanto hay que añadir el flag -g seguido del nombre del fichero donde queremos que se guarden los resultados. El fichero resultados.tsv se guardará en el mismo directorio donde se lanza el comando:

raul@localhost:~$ ab -n 1000 -c 50 -f ALL -g resultados.tsv https://www.meneame.net/

 

 

Ahora es necesario crear un fichero de configuración para que GNUPlot genere la imagen con los resultados. Para ello crearemos un fichero, por ejemplo gnuplot.p en el mismo directorio donde se ha guardado el fichero resultados.tsv (puede estar en otro directorio pero hay que indicarle luego toda la ruta). El contenido del fichero (gnuplot1.p) será el siguiente (modificadlo para vuestro caso): 

# Tamaño y formato (png) de la imagen
set terminal png size 600,400
# Nombre del fichero de salida
set output "rendimiento_web1.png"
# Título
set title "1000 peticiones, 50 peticiones concurrentes"
# Proporción
set size ratio 0.6
# Lineas Eje-Y
set grid y
# Leyenda X
set xlabel "Nº de peticiones"
# Leyenda Y
set ylabel "Tiempo de respuesta (ms)"
# Graficar los datos
plot "resultados.tsv" using 9 smooth sbezier with lines title "www.meneame.net"
exit

 

 

Para lanzarlo, ejecutaremos:

raul@localhost:~$ gnuplot gnuplot1.p

 

 

El resultado es el siguiente:

Apache BenchmarkRendimiento web

 

 

Aquí os dejo otra forma de graficar los resultados para le mismo fichero resultados.tsv anterior (fichero gnuplot2.p):

# Tamaño y formato (jpg) de la imagen
set terminal jpeg size 500,500
# This sets the aspect ratio of the graph
set size 1, 1
# Nombre del fichero de salida
set output "rendimiento_web2.jpg"
# Título
set title "Rendimiento www.meneame.net"
# Ubicar la leyenda
set key left top
# Lineas eje Y
set grid y
# Eje X para el tiempo
set xdata time
# Formato de tiempo
set timefmt "%s"
# Formato de salida para etiquetas eje X
set format x "%S"
# Leyenda X
set xlabel 'Segundos'
# Leyenda Y
set ylabel "Tiempo de respuesta (ms)"
# Usar tabuladores como delimitador en lugar de espacios
set datafile separator '\t'
# Graficar los datos
plot "resultados.csv" every ::2 using 2:5 title 'Tiempo de respuesta' with points
exit

 

 

Para lanzarlo, ejecutaremos:

raul@localhost:~$ gnuplot gnuplot2.p

 

 

El resultado es el siguiente:

Apache BenchmarkRendimiento Web con puntos

 

 

Como la mayoría de programas en la actualidad, Apache Benchmark dispone de multitud de opciones que junto con las opciones de GNUPlot, hace que sea casi imposible explicarlas todas. Esta parte os la dejo a vosotros con el fin de que podáis experimentar con ambas herramientas y así poder obtener resultados que sean acordes a vuestras necesidades. wink

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

     

Código de seguridad
Refescar