Apache Benchmarking (ab): comprobando el rendimiento de un servidor web

Actualizada:

Apache tiene una herramienta muy útil, Apache Benchmarking (ab), que nos va a servir para conocer un poco mejor como funciona nuestro servidor y que nos va a indicar parámetros tan interesantes como el nivel de carga que puede soportar, el número de usuarios concurrentes (Concurrency Level), el tiempo de respuesta, etc.

¿Cómo puedes ejecutar Apache Benchmarking (ab) en servidores con Rocky Linux o Alma Linux?

Tienes que comprobar que tienes instalado el paquete httpd-tools, y si no lo tienes, lo instalas con este comando en tu Rocky Linux:

sudo dnf install httpd-tools

Y el comando para ejecutar ab es el siguiente:

ab -n 100 -c 5 https://ejemplo.com/

Donde estamos indicando que haga el test con 100 con­exiones (-n), limitándolo a 5 conexiones concurrentes (-c) en google.com. Es importante que no se os olvide terminar el comando con /

  • -n (número): número de solicitudes que ab debe enviar a apache
  • -t (tiempo de espera): para especificar (en segundos) cuánto tiempo ab debe continuar enviando solicitudes
  • -c (concurrente): para especificar el número de solicitudes simultáneas que ab debe hacer

Resultado que obtenemos al ejecutar Apache Benchmarking (ab)

ab -n 100 -c 5 https://ejemplo.com/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ejemplo.com (be patient).....done

Server Software: gws
Server Hostname: ejemplo.com
Server Port: 443

Document Path: /
Document Length: 219 bytes

Concurrency Level: 5
Time taken for tests: 1.601 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 54000 bytes
HTML transferred: 21900 bytes
Requests per second: 62.46 [#/sec] (mean)
Time per request: 80.046 [ms] (mean)
Time per request: 16.009 [ms] (mean, across all concurrent requests)
Transfer rate: 32.94 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 38 39 0.4 38 39
Processing: 40 41 0.8 41 47
Waiting: 40 41 0.8 41 47
Total: 78 80 1.0 80 85
ERROR: The median and mean for the initial connection time are more than twice the standard
deviation apart. These results are NOT reliable.

Percentage of the requests served within a certain time (ms)
50% 80
66% 80
75% 80
80% 80
90% 81
95% 81
98% 82
99% 85
100% 85 (longest request)

Ten en cuenta, que si estás probando este comando con servidores que no son tuyos y te pasas poniendo conexiones concurrentes, lo más probable es que su firewall lo considere un ataque DDOS y te bloquee la IP. Así que no está recomendado usar esta herramienta con servidores ajenos. Usa esta herramienta en tu red local, en host que tú controles solamente.

¿Cómo interpretamos el test?

  1. Document Path: Indica el camino del documento que se ha probado. En este caso, / representa la raíz del sitio web.
  2. Document Length: El tamaño del documento solicitado, en bytes. Aquí es 219 bytes.
  3. Concurrency Level: El número de solicitudes concurrentes que se realizaron durante la prueba. En este caso, fueron 5.
  4. Time taken for tests: El tiempo total que duró la prueba, en segundos. Aquí es 1.601 segundos.
  5. Complete requests: El número total de solicitudes completadas con éxito. En este caso, 100.
  6. Failed requests: El número de solicitudes que fallaron. 0, lo que indica que todas las solicitudes se completaron con éxito.
  7. Write errors: Errores al escribir datos. 0.
  8. Non-2xx responses: El número de respuestas que no fueron códigos de estado HTTP 2xx (éxito). Aquí, todas las respuestas fueron 100% no 2xx, lo que indica que no todas las respuestas fueron exitosas.
  9. Total transferred: La cantidad total de datos transferidos en la prueba, en bytes. Aquí, son 54,000 bytes.
  10. HTML transferred: La cantidad de datos HTML transferidos, en bytes. Es 21,900 bytes.
  11. Requests per second: La tasa de solicitudes por segundo, en promedio. Es 62.46 solicitudes por segundo.
  12. Time per request: El tiempo promedio por solicitud. Hay dos valores:
    • mean: El promedio de tiempo por solicitud, que es 80.046 ms.
    • mean, across all concurrent requests: El promedio de tiempo por solicitud considerando todas las solicitudes concurrentes, que es 16.009 ms.
  13. Transfer rate: La tasa de transferencia de datos, en kilobytes por segundo. Aquí, es 32.94 KB/sec.
  14. Connection Times (ms): El desglose de tiempos de conexión en milisegundos:
    • Connect: Tiempo para establecer la conexión.
    • Processing: Tiempo para procesar la solicitud.
    • Waiting: Tiempo de espera hasta recibir la respuesta.
    • Total: Tiempo total para completar la solicitud.
      Los valores min, mean (promedio), median (mediana), y max (máximo) son proporcionados junto con la desviación estándar.
  15. ERROR: Este mensaje de error indica que hay una gran variabilidad en los tiempos de conexión inicial. La diferencia entre la mediana y la media para el tiempo de conexión inicial es más del doble de la desviación estándar, lo que sugiere que los resultados podrían no ser fiables debido a la alta variabilidad.
  16. Percentage of the requests: La mayoría de las solicitudes (más del 80%) se completan en 80 ms, lo que indica que el servidor está respondiendo rápidamente y de manera consistente.

¿Un ejemplo que puedes usar para simular una situación más o menos real de mucha carga en tu servidor (muchas visitas)? Pues por ejemplo:

ab -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate" https://ejemplo.com/

Con lo que estamos simulando 10 visitantes al mismo tiempo visitando unas 100 páginas en el periodo del test.

Conclusión

ab de apache es una herramienta muy sencilla que puedes usar para ver si estás optimizando bien apache, MySQL y más programas de tu servidor web. Te recomiendo que actives HTTP/2 en tu servidor y que conectes tus dominios a un CDN como Cloudflare para repartir la carga.

¿Más cosas que puedes instalar en tu servidor? Te recomiendo que uses logwatch para controlar tus logs, instalar RKhunter para comprobar RootkitsMaldet y ClamAV para malware y virus (para servidores de correo), instalar un Firewall como CSF, un HIDS como OSSEC o mejorar la seguridad de SSHApache o MariaDB o los parámetros del Kernel.


Descubre más desde algoentremanos.com

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Foto del autor

Ivan Benito

Apasionado de la lectura y los viajes, experto en tecnología e informática y fan de la privacidad online. Desde el año 2007 me he dedicado al SEO, a escribir y a crear páginas web con WordPress sobre todo tipo de temáticas. Si tienes alguna duda y necesitas ayuda... ¡Pregúntame!

Si tienes preguntas, quieres que hagamos una review de una app, programa o producto, simplemente mándanos un e-mail mediante nuestro formulario de contacto. Te contestaremos en el menor tiempo posible. ¡Muchas gracias y salU2! Algoentremanos realiza reviews de manera profesional y en muchas ocasiones recibimos compensación de las compañías cuyos productos revisamos. Probamos cada producto a fondo y otorgamos altas calificaciones solo a los mejores. La propiedad de Algoentremanos.com es independiente y las opiniones expresadas aquí son solo nuestras. Algunos enlaces del artículo son afiliados: pueden generar un beneficio a algoentremanos.com. Saber más.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.