
Dentro de la serie de entradas que hablan sobre cómo comprobar el rendimiento de servidores GNU/Linux hoy vamos a ver cómo realizar pruebas de rendimiento sobre un servidor Apache que contenga una página web. Para ello, vamos a emplear ab (Apache Benchmark tool), que se instala automáticamente al instalara apache2-utils en nuestro sistema.
ab permite simular una solicitud de conexión a una web, pero también simular la conexión de cientos de clientes, así como la concurrencia de varios thread's simultáneamente. De esta forma podemos comprobar, más o menos, el rendimiento que tendría nuestra web con una carga de trabajo real.
Instalación
Como ya se mencionó, únicamente hay que instalar el paquete apache2-utils,
shell> apt-get install apache2-utils
Uso
ab únicamente requiere que le pasemos como argumento la URL que deseamos examinar, pero como era de esperar, también permite el paso de parámetros, lo cual facilitará enormemente el chequeo del sistema. En nuestros caso vamos a indicarle dos parámetros, el primer de ellos, opción -n, indica el número de conexiones que se van a realizar. El segundo, opción -c, indica la concurrencia de las conexiones, es decir, el número de conexiones simultáenas a la web.
shell> ab -n 1000 -c 25 http://www.your_URL.com/
Tras la ejecución del comando, nos presentará unos resultados,
Server Software: Apache/2.2.16 Server Hostname: www.your_URL.com Server Port: 80 Document Path: / Document Length: 46701 bytes Concurrency Level: 25 Time taken for tests: 16.897 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 47177000 bytes HTML transferred: 46701000 bytes Requests per second: 59.18 [#/sec] (mean) Time per request: 422.433 [ms] (mean) Time per request: 16.897 [ms] (mean, across all concurrent requests) Transfer rate: 2726.54 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 3 3.1 2 24 Processing: 117 418 66.1 414 829 Waiting: 93 358 63.3 350 724 Total: 135 421 65.4 416 831 Percentage of the requests served within a certain time (ms) 50% 416 66% 428 75% 436 80% 440 90% 459 95% 490 98% 664 99% 725 100% 831 (longest request)

Con los resultados delante, ya sólo queda interpretarlos. Lo primero de todo, dejar claro que el benchmark únicamente se ejecuta sobre la URL especificada, en mi caso sobre /indix.html y no sobre toda la web. Esto hay que tenerlo en cuenta, pues no es lo mismo un html estático que un html que lo genera un php con mucha información y acceso a base de datos. También tener en cuenta que todos los complementos adiciones que no sean html, léase javascript, css, imágenes, etc. no entran en la carga, ni por lo tanto en la comprobación de rendimiento. Aun así, Apache Benchmark es una muy buena herramienta para la realización de test a servidores web.
Interpretación
Es importante tener claro lo comentado anteriormente sobre el funcionamiento de ab. Si está claro, ya podemos interpretar los resultados. Aunque prácticamente toda la información mostrada es importante, cabe destacar por ejemplo el tiempo que tarda en ejecutarse el test, así como la cantidad de datos transmitidos. Esto nos dará una orientación sobre la cantidad de datos que descargará cada usuario que visite la URL de prueba. También es muy importante, especialmente para saber cómo afectará al posicionamiento, la relación entre el tiempo de conexión (Connection Time) y el tiempo que tarda en generarse el documento de salida.
Es importante para tener más claro el comportamiento de nuestra web que esta prueba se ejecute varias veces con parámetros diferente, tanto en número de usuarios concurrentes, como el número de conexiones. Esto es lógico, pues no es lo mismo tener un único usuario navegando que tener 200 simultáneos.
Espero que esta aproximación a ab os deje con ganas de más información. Si la queréis no dudéis de dejar un comentario ni tampoco de leer el manual de la aplicación, que sin duda ayudará mucho.
La entrada Linux benchmark III la puedes leer en Puppet Linux.