GNU/Linux >> Tutoriels Linux >  >> Linux

Test de la charge des serveurs Web avec Siege Benchmark Tool

Présentation

Siege est un test de régression open source et un utilitaire de référence. Il peut tester une URL unique avec un nombre d'utilisateurs simulés défini par l'utilisateur, ou il peut lire de nombreuses URL en mémoire et les stresser simultanément. Le programme rapporte le nombre total de hits enregistrés, les octets transférés, le temps de réponse, la simultanéité et l'état de retour. Siege prend en charge les protocoles HTTP/1.0 et 1.1, les directives GET et POST, les cookies, la journalisation des transactions et l'authentification de base. Ses fonctionnalités sont configurables par utilisateur.

La plupart des fonctionnalités sont configurables avec des options de ligne de commande qui incluent également des valeurs par défaut pour minimiser la complexité de l'invocation du programme. Ainsi, Siege vous permet de stresser un serveur Web avec n nombre d'utilisateurs t nombre de fois, où n et t sont définis par l'utilisateur. Il enregistre la durée du test ainsi que la durée de chaque transaction. Il indique le nombre de transactions, le temps écoulé, les octets transférés, le temps de réponse, le taux de transaction, la simultanéité et le nombre de fois où le serveur a répondu OK, c'est-à-dire le code d'état 200.

Aussi Siège ne doit être exécuté que sur des serveurs que vous possédez ou sur ceux que vous avez l'autorisation explicite de tester. Dans certains pays, l'utilisation du siège sur des sites Web non autorisés peut être considérée comme un crime.

INSTALLATION

Siege a été construit avec GNU autoconf. Si vous êtes familier avec le logiciel GNU, vous devriez être à l'aise avec l'installation de siege. Veuillez consulter le fichier INSTALL pour plus de détails.

Pour installer Siege sous Debin/Ubuntu , vous pouvez le faire avec la commande :

$ sudo apt install siege

Pour CentOS/RHEL , Installez et activez epel référentiel pour installer siège :

# yum install epel-release
# yum install siege

Vous pouvez également construire le Siège à partir de la source.Pour cela, vous aurez besoin d'avoir build-essential et packages de développement installés.

For Debian/Ubuntu
$ sudo apt install build-essential  

For CentOS/RHEL   
# yum groupinstall 'Development Tools'  

Ensuite, téléchargez Siege et installez à partir des sources comme indiqué.

[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 ~]#

Puis extrayez-le :

$ tar -zxvf siege-latest.tar.gz

Allez aussi dans le répertoire extrait et installez-le avec :

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

Configurer le siège

Une fois l'installation terminée, vous pouvez ajuster votre siège fichier de configuration. Il se trouve dans /etc/siege/siegerc . Si vous avez décidé de compiler le package à partir des sources, vous devrez exécuter :

$ siege.config

En plus de cela, cela générera siege.conf fichier situé dans la maison de votre utilisateur ~/.siege/siege.conf .

Le contenu du fichier devrait ressembler à ceci. Notez que j'ai décommenté le fichier journal et temps instructions :

[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]#

Aussi avec la configuration actuelle, siège imitera 25 utilisateurs simultanés pendant 1 minute.

Vous êtes maintenant prêt à lancer votre siège.

Tester la charge du site Web avec Siege

Il vous suffit de spécifier le site Web que vous souhaitez tester comme ceci :

# 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 disponibilité reste à 100 % et il n'y a pas d'échec de connexion, votre système a bien fonctionné et il n'y a eu aucun problème. Vous devez également surveiller le temps de réponse.

Exécutez Siege avec plusieurs sites Web

Vous pouvez tester plusieurs URL en définissant siege pour les lire à partir du fichier. Vous pouvez décrire les URL dans /usr/local/etc/urls.txt comme ceci :

[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]#

Aussi pour dire siège pour tester les URL du fichier, utilisez le -f option comme celle-ci :

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

Vous pouvez également utiliser les options de ligne de commande :

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

Conclusion

Siège est un outil puissant pour mesurer la fiabilité de votre système lorsqu'il est soumis à une charge élevée. Vous devez toujours exécuter vos tests avec prudence car le serveur testé peut devenir inaccessible pendant l'évaluation. Balises


Linux
  1. Inspectez les capacités des binaires ELF avec cet outil open source

  2. Le cycle de vie des tests du noyau Linux

  3. 3 choses utiles que vous pouvez faire avec l'outil IP sous Linux

  4. Directives de test d'application et de charge

  5. Les meilleurs serveurs Web Linux

Comment sécuriser les serveurs Linux avec SE Linux

Équilibrage de charge avec HAProxy, Nginx et Keepalived sous Linux

Comment trouver l'emplacement de vos serveurs avec Traceroute et WHOIS

Comment évaluer les performances d'un serveur Web avec Apache Bench

Comment surveiller les hôtes avec l'outil de surveillance Linux Icinga

Test de charge de site Web avec Apache JMeter sur Ubuntu 20.04