11Nov

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.

Enlaces recomendados

Leave a comment