Mi Blog
👉 Cómo medir el rendimiento de un servidor Web con Apache Benchmark

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

 
(7 votos)

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 sacar gráficas del rendimiento de vuestro servidor web...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES APACHE BENCHMARK?

Apache Benchmark (ab) es una herramienta para medir el rendimiento 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 el 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!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
Cookies

Usamos cookies en nuestro sitio web. Algunas de ellas son esenciales para el funcionamiento del sitio, mientras que otras nos ayudan a mejorar el sitio web y también la experiencia del usuario (cookies de rastreo). Puedes decidir por ti mismo si quieres permitir el uso de las cookies. Ten en cuenta que si las rechazas, puede que no puedas usar todas las funcionalidades del sitio web.