GNU/Linux >> Znalost Linux >  >> Linux

Testování zátěže webových serverů pomocí nástroje Siege Benchmark Tool

Úvod

Siege je open source nástroj pro regresní test a benchmark. Může zátěžový test jedné adresy URL s uživatelem definovaným počtem simulovaných uživatelů nebo může číst mnoho adres URL do paměti a současně je stresovat. Program hlásí celkový počet zaznamenaných shod, přenesených bajtů, dobu odezvy, souběžnost a návratnost. Siege podporuje protokoly HTTP/1.0 a 1.1, direktivy GET a POST, cookies, protokolování transakcí a základní autentizaci. Jeho funkce jsou konfigurovatelné pro každého uživatele.

Většinu funkcí lze konfigurovat pomocí voleb příkazového řádku, které také zahrnují výchozí hodnoty, aby se minimalizovala složitost vyvolání programu. Siege vám tedy umožňuje zatěžovat webový server s n počtem uživatelů t kolikrát, kde n a t jsou definovány uživatelem. Zaznamenává dobu trvání testu i dobu trvání každé jednotlivé transakce. Hlásí počet transakcí, uplynulý čas, přenesené bajty, dobu odezvy, rychlost transakcí, souběžnost a kolikrát server odpověděl OK, to je stavový kód 200.

Také Siege by měl být spuštěn pouze na serverech, které vlastníte, nebo na serverech, na kterých máte výslovné povolení k testování. V některých zemích může být používání obležení na nepovolených webových stránkách považováno za zločin.

INSTALACE

Siege byl postaven pomocí GNU autoconf. Pokud jste obeznámeni se softwarem GNU, pak by vám měla být příjemná instalace siege. Další podrobnosti najdete v souboru INSTALL.

Chcete-li nainstalovat Siege pod Debin/Ubuntu , můžete to provést příkazem:

$ sudo apt install siege

Pro CentOS/RHEL , Nainstalujte a povolte epel úložiště pro instalaci siege :

# yum install epel-release
# yum install siege

Můžete také postavit Siege ze zdroje. K tomuto účelu budete potřebovat základní sestavení a nainstalované vývojové balíčky.

For Debian/Ubuntu
$ sudo apt install build-essential  

For CentOS/RHEL   
# yum groupinstall 'Development Tools'  

Poté si stáhněte Siege a nainstalujte ze zdrojů, jak je uvedeno.

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

Poté jej extrahujte:

$ tar -zxvf siege-latest.tar.gz

Přejděte také do extrahovaného adresáře a nainstalujte jej pomocí:

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

Konfigurace Siege

Po dokončení instalace můžete upravit své obležení konfigurační soubor. Nachází se v /etc/siege/siegerc . V případě, že jste se rozhodli sestavit balíček ze zdroje, budete muset spustit:

$ siege.config

Kromě toho toto vygeneruje siege.conf soubor umístěný v domově vašeho uživatele ~/.siege/siege.conf .

Obsah souboru by měl vypadat nějak takto. Všimněte si, že jsem odkomentoval soubor protokolu a čas směrnice:

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

Také s aktuální konfigurací obléhat bude napodobovat 25 souběžných uživatelů během 1 minuty.

Nyní jste připraveni zahájit své obléhání.

Testování zatížení webu pomocí Siege

Stačí zadat webovou stránku, kterou chcete testovat, takto:

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

Pokud dostupnost zůstane na 100 % a neexistují žádná neúspěšná připojení, váš systém fungoval dobře a nebyly žádné problémy. Měli byste také sledovat dobu odezvy.

Spusťte Siege s více webovými stránkami

Nastavením obležení můžete otestovat více adres URL číst je ze souboru. Adresy URL můžete popsat v souboru /usr/local/etc/urls.txt takhle:

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

Také říct obležení k otestování adres URL ze souboru použijte -f možnost takto:

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

Můžete také použít možnosti příkazového řádku:

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

Závěr

Obléhání je výkonný nástroj pro měření spolehlivosti vašeho systému při vysoké zátěži. Testy byste měli vždy spouštět opatrně, protože testovaný server se může během hodnocení stát nedostupným. Tagy


Linux
  1. Testování zátěže na vašem webovém serveru pomocí Siege (Benchmarking Tool)

  2. Jak porovnat vaše servery Ubuntu Linux pomocí testovací sady Phoronix

  3. Použití python-novaclient s cloudovými servery Rackspace

  1. Pokyny pro použití a zátěžové testy

  2. Začněte s cloudovými servery

  3. Nejlepší webové linuxové servery

  1. Prohlédněte si možnosti binárních souborů ELF pomocí tohoto nástroje s otevřeným zdrojovým kódem

  2. Životní cyklus testování linuxového jádra

  3. Monitorování úrovně mikrofonu pomocí nástroje příkazového řádku v Linuxu