GNU/Linux >> Tutoriales Linux >  >> Linux

Probando la carga de servidores web con Siege Benchmark Tool

Introducción

Siege es una prueba de regresión de código abierto y una utilidad de referencia. Puede hacer una prueba de estrés de una sola URL con un número definido por el usuario de usuarios simulados, o puede leer muchas URL en la memoria y estresarlas simultáneamente. El programa informa el número total de visitas registradas, los bytes transferidos, el tiempo de respuesta, la concurrencia y el estado de devolución. Siege admite los protocolos HTTP/1.0 y 1.1, las directivas GET y POST, cookies, registro de transacciones y autenticación básica. Sus características son configurables por usuario.

La mayoría de las funciones se pueden configurar con opciones de línea de comandos que también incluyen valores predeterminados para minimizar la complejidad de la invocación del programa. Entonces Siege le permite estresar un servidor web con n número de usuarios t número de veces, donde n y t son definidos por el usuario. Registra el tiempo de duración de la prueba, así como la duración de cada transacción individual. Informa la cantidad de transacciones, el tiempo transcurrido, los bytes transferidos, el tiempo de respuesta, la tasa de transacción, la concurrencia y la cantidad de veces que el servidor respondió OK, ese es el código de estado 200.

También Asedio solo debe ejecutarse en servidores de su propiedad o en los que tenga permiso explícito para probar. En algunos países, usar el asedio en sitios web no autorizados puede considerarse un delito.

INSTALACIÓN

Siege fue construido con GNU autoconf. Si está familiarizado con el software GNU, debería sentirse cómodo instalando asedio. Consulte el archivo INSTALL para obtener más detalles.

Para instalar Asedio bajo Debin/Ubuntu , puedes hacer esto con el comando:

$ sudo apt install siege

Para CentOS/RHEL , Instala y habilita epel repositorio para instalar asedio:

# yum install epel-release
# yum install siege

También puedes construir el Asedio desde la fuente. Para ello necesitará tener build-essential y paquetes de desarrollo instalados.

For Debian/Ubuntu
$ sudo apt install build-essential  

For CentOS/RHEL   
# yum groupinstall 'Development Tools'  

Entonces descarga Asedio e instálelo desde las fuentes como se muestra.

[root@unixcop ~]# wget http://download.joedog.org/siege/siege-latest.tar.gz
--2021-08-24 07:12:17--  http://download.joedog.org/siege/siege-latest.tar.gz
Resolving download.joedog.org (download.joedog.org)... 52.24.24.107
Connecting to download.joedog.org (download.joedog.org)|52.24.24.107|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 543378 (531K) [application/x-gzip]
Saving to: ‘siege-latest.tar.gz’

100%[============================================================================================================>] 543,378     --.-K/s   in 0.1s    

2021-08-24 07:12:18 (4.57 MB/s) - ‘siege-latest.tar.gz’ saved [543378/543378]

[root@unixcop ~]#

Luego extráigalo:

$ tar -zxvf siege-latest.tar.gz

También vaya al directorio extraído e instálelo con:

$ cd siege-*/
$ sudo ./configure --prefix=/usr/local --with-ssl=/usr/bin/openssl
$ sudo make && make install

Configuración de asedio

Una vez que haya completado la instalación, puede ajustar su sitio archivo de configuración. Se encuentra en /etc/siege/siegerc . En caso de que haya decidido compilar el paquete desde la fuente, deberá ejecutar:

$ siege.config

Además de, Esto generará siege.conf archivo ubicado en la casa de su usuario ~/.siege/siege.conf .

El contenido del archivo debería verse así. Tenga en cuenta que he descomentado el archivo de registro y tiempo directivas:

[root@unixcop siege]# cat siegerc |egrep -v "^$|#"
verbose = true
color = on
quiet = false
json_output = false
show-logfile = true
logging = false
logfile = ${HOME}/siege.log
gmethod = HEAD
parser = true
nofollow = ad.doubleclick.net
nofollow = pagead2.googlesyndication.com
nofollow = ads.pubsqrd.com
nofollow = ib.adnxs.com
limit = 255
protocol = HTTP/1.1
chunked = true
cache = false
connection = close
concurrent = 25
delay = 0.0 
internet = false
benchmark = false
accept-encoding = gzip, deflate
url-escaping = true
unique = true
 
[root@unixcop siege]#

También con la configuración actual, asedio imitará a 25 usuarios simultáneos durante 1 minuto.

Ahora estás listo para llevar a cabo tu asedio.

Prueba de carga del sitio web con Siege

Solo necesita especificar el sitio web que desea probar de esta manera:

# siege example.com
 
[root@unixcop .siege]# siege 192.168.13.133/unixcop
[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.1.1
** Preparing 25 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions:		         6457 hits
Availability:		      100.00 %
Elapsed time:		        1.45 secs
Data transferred:	       11.51 MB
Response time:		        0.05 secs
Transaction rate:	      453.10 trans/sec
Throughput:		        7.94 MB/sec
Concurrency:		       24.20
Successful transactions:         672
Failed transactions:	           0
Longest transaction:	        0.24
Shortest transaction:	        0.02
 
[root@unixcop .siege]# 

Si la disponibilidad se mantiene en 100% y no hay conexiones fallidas, su sistema funcionó bien y no hubo problemas. También debe vigilar el tiempo de respuesta.

Ejecute Siege con varios sitios web

Puede probar varias URL configurando asedio para leerlos desde el archivo. Puede describir las URL en /usr/local/etc/urls.txt así:

[root@unixcop ~]# cd /usr/local/etc/
[root@unixcop etc]# cat urls.txt 
# URLS file for siege
# --
# Format the url entries in any of the following formats:
# http://www.whoohoo.com/index.html
# http://www/index.html
# www/index.html
# http://www.whoohoo.com/cgi-bin/howto/display.cgi?1013
# Use the POST directive for pages that require it:
# http://www.whoohoo.com/cgi-bin/haha.cgi POST ha=1&ho=2
#      or POST content from a file:
# http://www.whoohoo.com/melvin.jsp POST </home/jeff/haha
# http://www.whoohoo.com/melvin.jsp POST <./haha
# 
# You may also assign and reference variables inside this file:
# HOST=www.joedog.org
# PROT=https  # Secure protocol
# PORT=443    # Default https port
# 
# $(PROT)://$(HOST):$(PORT)/siege/jsoner.php?haha=papa
# $(PROT)://$(HOST)/siege/jsoner.php?day=%2332
# $(PROT)://$(HOST)/siege/jsoner.php POST {haha:papa}
# 
# Since $ is used to prefix scalar variables, you have to escape 
# them if you want to pass them to the server: 
# $(PROT)://$(HOST)/siege/jsoner.php?amount=\$10.00&cost=\$12.99
# -------------------------------------------------------

[root@unixcop etc]#

También para contar sitio para probar las URL del archivo, use -f opción como esta:

# siege -f /usr/local/etc/urls.txt

También puede utilizar las opciones de la línea de comandos:

Options:
-V,     --version VERSION, prints the version number.
-h,     --help HELP, prints this section.
-C,     --config CONFIGURATION, show the current config.
-v,     --verbose VERBOSE, prints notification to screen.
-q,     --quiet QUIET turns verbose off and suppresses output.
-g,     --get GET, pull down HTTP headers and display the transaction. Great for application debugging.
-p,     --print PRINT, like GET only it prints the entire page.
-c,      --concurrent=NUM CONCURRENT users, default is 10
-r,      --reps=NUM REPS, number of times to run the test.
-t,     --time=NUMm TIMED testing where "m" is modifier S, M, or H
ex:   --time=1H, one hour test.
-d,    --delay=NUM Time DELAY, random delay before each request
-b,    --benchmark BENCHMARK: no delays between requests.
-i,      --internet INTERNET user simulation, hits URLs randomly.
-f,      --file=FILE FILE, select a specific URLS FILE.
-R,     --rc=FILE RC, specify an siegerc file
-l,      --log[=FILE] LOG to FILE. If FILE is not specified, the default is used: PREFIX/var/siege.log
-m,    --mark="text" MARK, mark the log file with a string. between .001 and NUM. (NOT COUNTED IN STATS)
-H,    --header="text" Add a header to request (can be many)
-A,    --user-agent="text" Sets User-Agent in request
-T,     --content-type="text" Sets Content-Type in request
-j,      --json-output JSON OUTPUT, print final stats to stdout as JSON
         --no-parser NO PARSER, turn off the HTML page parser
        --no-follow NO FOLLOW, do not follow HTTP redirects

Conclusión

Asedio es una poderosa herramienta para medir la confiabilidad de su sistema cuando está bajo carga alta. Siempre debe ejecutar sus pruebas con precaución ya que el servidor probado puede volverse inaccesible durante la evaluación. Etiquetas


Linux
  1. Inspeccione las capacidades de los binarios ELF con esta herramienta de código abierto

  2. El ciclo de vida de las pruebas del kernel de Linux

  3. Pautas de prueba de aplicación y carga

  4. Comience con los servidores en la nube

  5. Los mejores servidores Web Linux

Cómo asegurar servidores Linux con SE Linux

Equilibrio de carga con HAProxy, Nginx y Keepalived en Linux

Cómo encontrar la ubicación de sus servidores con Traceroute y WHOIS

Cómo comparar el rendimiento del servidor web con Apache Bench

Cómo monitorear hosts con la herramienta de monitoreo Linux Icinga

Prueba de carga del sitio web con Apache JMeter en Ubuntu 20.04