Ya sea como uno de los pasos durante el diseño, previo al paso a producción o cualquier otro escenario, es habitual la necesidad de poder realizar mediciones sobre la cantidad de páginas que nuestro servidor web podrá servir.
Este tipo de pruebas, también conocidas como stress test o pruebas de estrés, son especialmente útiles a la hora de dimensionar nuestros servidores.
En esta entrada utilizaremos la herramienta Apache Bench.
Cabe destacar que Apache Bench no es amistosa a la hora de probar nuestra página web, podemos provocar un denial of service si realizamos demasiadas peticiones concurrentes, por lo que te recomendamos realizar varios test empezando por algunos poco exigentes y de ahí ir subiendo mientras monitorizas el servidor.
Instalar ab
Revisa si en tu sistema tienes instalada la herramienta «ab» ya que por defecto no es habitual que venga instalada.
Esta prueba es conveniente que la realices desde fuera del servidor web, a ser posible en las condiciones más similares a tu escenario real. Puede ser desde tu propio ordenador o una máquina virtual.
Si el sistema es Ubuntu 16.04 o está basado en él, puedes instalarlo de la siguiente manera:
sudo apt-get install apache2-utils
Si el sistema desde el que vas a lanzar la prueba es un sistema Centos 7 / RHEL 7 o basado en estos sistemas, instala apache bench de la siguiente manera:
yum install -y httpd-tools
Lanzar una prueba con Apache Bench
Vamos a realizar una prueba sencilla. Queremos saber el comportamiento de nuestra página cuando hay 100 peticiones con 10 usuarios concurrentes.
ab -c 10 -n 100 https://www.administradortotal.org.es/
Indicamos con «-c» el número de conexiones concurrentes que queremos y con «-n» el número total de peticiones que haremos en esta prueba.
Resultado
Como se puede ver en el ejemplo, la salida de la prueba es muy interesante, teniendo los datos necesarios para realizar un buen informe, en caso necesario.
Server Software: Apache/2.4.18 Server Hostname: www.administradortotal.net Server Port: 443 SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 Document Path: / Document Length: 26262 bytes Concurrency Level: 10 Time taken for tests: 12.682 seconds Complete requests: 100 Failed requests: 0 Total transferred: 2651100 bytes HTML transferred: 2626200 bytes Requests per second: 7.88 [#/sec] (mean) Time per request: 1268.243 [ms] (mean) Time per request: 126.824 [ms] (mean, across all concurrent requests) Transfer rate: 204.14 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 265 298 24.0 293 390 Processing: 428 932 243.5 956 1409 Waiting: 160 527 213.6 490 1022 Total: 719 1230 248.3 1246 1721 Percentage of the requests served within a certain time (ms) 50% 1246 66% 1366 75% 1440 80% 1463 90% 1548 95% 1601 98% 1719 99% 1721 100% 1721 (longest request)