Prueba de carga de un sitio web con Siege

Siege es una aplicación para probar y testear la carga HTTP de un servidor. Ayuda a probar tu servidor y los desarrollos web en situaciones de alta carga. Sacado de su página web:

Siege is an http load testing and benchmarking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP and HTTPS protocols. It lets its user hit a web server with a configurable number of simulated web browsers. Those browsers place the server “under siege.”

Servers

Para instalarlo en Ubuntu tan sólo hay que usar los repositorios:

sudo apt-get install siege

En Mac OS X usando MacPorts:

sudo port install siege

Y usando brew:

sudo brew install siege

Si no usas ninguno de estos tendrás que descargar y compilar el código fuente. Tan sólo hay que ejecutar estos comandos y el binario de la aplicación quedará instalado en la carpeta /usr/local/bin:

curl -O http://download.joedog.org/siege/siege-latest.tar.gz
tar xzvpf siege-latest.tar.gz
cd `ls -1d */ | grep siege- | sort -r | head -1`
./configure
make
sudo make install

Usa siege.config para crear un fichero .siegerc en tu carpeta home con la configuración por defecto:

$ siege.config
New configuration template added to /Users/user/.siegerc
Run siege -C to view the current settings in that file

Entonces podrás ver sus opciones usando el parámetro -C de siege:

$ siege -C
CURRENT  SIEGE  CONFIGURATION
Mozilla/5.0 (apple-x86_64-darwin13.3.0) Siege/3.0.6
Edit the resource file to change the settings.
----------------------------------------------
version:                        3.0.6
verbose:                        true
quiet:                          false
debug:                          false
protocol:                       HTTP/1.1
get method:                     HEAD
connection:                     close
concurrent users:               15
time to run:                    n/a
repetitions:                    n/a
socket timeout:                 30
accept-encoding:                gzip
delay:                          1 sec
internet simulation:            false
benchmark mode:                 false
failures until abort:           1024
named URL:                      none
URLs file:                      /usr/local/etc/urls.txt
logging:                        true
log file:                       /usr/local/var/siege.log
resource file:                  /Users/user/.siegerc
timestamped output:             false
comma separated output:         false
allow redirects:                true
allow zero byte data:           true
allow chunked encoding:         true
upload unique files:            true

Ahora que siege está instalado puedes empezar a probar una web:

siege -c5 -d5 -r1 -v http://www.test.com

En este ejemplo he usado:

  • -c5 para definir la cantidad de usuarios concurrentes
  • -d5 para definir la espera entre cada petición de cada usuario
  • -r1 para definir el número de repeticiones

El resultado del comando es algo así:

** SIEGE 3.0.6
** Preparing 5 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200   0.14 secs:    7706 bytes ==> GET  /
HTTP/1.1 200   0.16 secs:    7706 bytes ==> GET  /
HTTP/1.1 200   0.11 secs:    7706 bytes ==> GET  /
HTTP/1.1 200   0.11 secs:    7706 bytes ==> GET  /
HTTP/1.1 200   0.11 secs:    7706 bytes ==> GET  /
done.

Transactions:		           5 hits
Availability:		      100.00 %
Elapsed time:		        4.12 secs
Data transferred:	        0.04 MB
Response time:		        0.13 secs
Transaction rate:	        1.21 trans/sec
Throughput:		        0.01 MB/sec
Concurrency:		        0.15
Successful transactions:           5
Failed transactions:	           0
Longest transaction:	        0.16
Shortest transaction:	        0.11

Pero este comando sólo prueba una URL en el servidor, la que se ha pasado como parámetro. Para hacer una prueba más real podemos usar el script de Perl logparse y así crear nuestro propio fichero urls.txt. Este programa coge URLs de ficheros log de accesos de Apache y crea el fichero urls.txt para usarlo más tarde con siege. Los parámetros necesarios son la web de la que queremos generar las URLs y el fichero access_log del servidor Apache:

perl logparse -h http://test.com -f /opt/local/apache2/logs/test.com-access_log

Una vez tengas tu fichero urls.txt puedes usarlo con siege con la opción -f:

siege -c5 -d5 -r1 -f=urls.txt -v http://www.test.com

Ref: http://www.joedog.org/siege-home/

You might also like

Solucionar “The Alias directive in … will probably never match because ir overlaps an earlier Alias”
Este es un aviso que aparece al arrancar el servidor Apache2.$ sudo service apache2 restart *...

Cambiar contraseña de root en MySQL
En GNU/Linux:$ sudo mysqld_safe --skip-grant-tables & $ mysql -u root -p #pulsar enter para meter...

Indicador de carga de CPU usando Pi-Stop con una Raspberry Pi
Compré un Pi-Stop para jugar un poco y para introducir a mis sobrinas a la programación. Pi-Stop es...

Conectarse a MySQL mediante SSH con MySQL Workbench
Si no tienes phpMyAdmin instalado en tu servidor o no te sientes cómodo usándolo tienes la opción...

Dejar un comentario?

0 Comentarios.

Deje un comentario

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