Cómo medir el rendimiento y límite de nuestro sitio web con la herramienta Siege
¿Porqué Siege?
Siege es una herramienta más de benchmarking para aplicaciones web como por ejemplo Apache Benchmark. Pero nos permite hacer pruebas de rendimiento sobre nuestro sitio web con múltiples páginas y seleccionadas de forma aleatoria.
A continuación vamos a ver cómo instalar Siege en nuestro sistema operativo y cómo usarlo para hacer pruebas sobre nuestro sitio web.
Instalando Siege
Para instalarlo basta con usar el siguiente comando para CentOS, Fedora, etc… :
sudo yum install siege
Y en el caso de usar una distribución Debian o basada en Debian como Ubuntu:
sudo apt-get install siege
Si escribimos en nuestro terminal lo siguiente, podremos comprobar que se ha instalado correctamente en el sistema operativo
siege -V SIEGE 3.0.8 Copyright (C) 2014 ... ... urodoz@machine $
Midiendo el rendimiento de una página
Para medir el rendimiento de una única url, por ejemplo : http://www.rqlogic.com/entradas/2014/Nov/03/servidor-estatico-nginx-con-docker.html, usaremos el siguiente comando:
siege --concurrent=20 --benchmark --time=1M http://www.rqlogic.com/entradas/2014/Nov/03/servidor-estatico-nginx-con-docker.html
Las opciones escogidas son las siguiente:
- –concurrent=20 : Indica que use de forma simultánea 20 wokers para lanzar las peticiones a la web.
- –benchmark : Modo, sin descanso. No permite el descanso de los workers entre peticiones.
- –time=1M : Tiempo de asalto, 1 minuto. Puede estar descrito en segundos (S) u horas (H)
Después de un minuto de ejecución tendremos la información en terrminal como la que sigue:
... Lifting the server siege... done. Transactions: 161835 hits Availability: 100.00 % Elapsed time: 59.38 secs Data transferred: 2853.09 MB Response time: 0.01 secs Transaction rate: 2725.41 trans/sec Throughput: 48.05 MB/sec Concurrency: 19.60 Successful transactions: 161835 Failed transactions: 0 Longest transaction: 0.04 Shortest transaction: 0.00 FILE: /home/urodoz/siege.log
De las informaciones podemos extraer las transacciones por segundo (Transaction rate) o la media de tiempo de respuesta (Response time).
Ya podemos poner a prueba nuestra web para ver cómo se comporta el servidor con muchas peticiones sobre una misma vista. Es interesante ver sobre que nivel nuestro servidor empezará a no poder entregar las peticiones, podemos hacerlo simplemente incrementando el número de concurrent workers.
Midiendo el rendimiento en la navegación de múltiples páginas
Para ese propósito, vamos a usar el siguiente archivo con el mismo script anterior, guardado en paths.txt:
http://www.rqlogic.com/entradas/2014/Nov/03/servidor-estatico-nginx-con-docker.html http://www.rqlogic.com/ http://www.rqlogic.com/categoria/linux.html http://www.rqlogic.com/entradas/2014/Nov/08/metrica-rendimiento-web-con-siege.html http://www.rqlogic.com/entradas/2014/Oct/28/borrar-contenedores-e-imagenes-antiguas-de-docker.html http://www.rqlogic.com/theme/plugins/font-awesome/css/font-awesome.min.css http://www.rqlogic.com/theme/css/styles.css
Ejecutamos la misma prueba de rendimiento con la inyección de las rutas en siege para tener un resultado más próximo a una navegación real.
siege --concurrent=20 --benchmark --time=1M -i --file=paths.txt ... Lifting the server siege... done. Transactions: 148429 hits Availability: 100.00 % Elapsed time: 59.11 secs Data transferred: 1871.96 MB Response time: 0.01 secs Transaction rate: 2511.06 trans/sec Throughput: 31.67 MB/sec Concurrency: 19.63 Successful transactions: 148429 Failed transactions: 0 Longest transaction: 0.08 Shortest transaction: 0.00
En la ejecución de siege podremos ver cómo va escogiendo urls de forma aleatoria del archivo que le hemos proporcionado.