GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Testen der Auslastung von Webservern mit dem Siege Benchmark Tool

Einführung

Siege ist ein Open-Source-Regressionstest- und Benchmark-Dienstprogramm. Es kann eine einzelne URL mit einer benutzerdefinierten Anzahl simulierter Benutzer einem Stresstest unterziehen oder viele URLs in den Speicher einlesen und sie gleichzeitig belasten. Das Programm meldet die Gesamtzahl der aufgezeichneten Treffer, die übertragenen Bytes, die Antwortzeit, die Parallelität und den Rückgabestatus. Siege unterstützt HTTP/1.0- und 1.1-Protokolle, die GET- und POST-Direktiven, Cookies, Transaktionsprotokollierung und grundlegende Authentifizierung. Seine Funktionen sind pro Benutzer konfigurierbar.

Die meisten Funktionen sind mit Befehlszeilenoptionen konfigurierbar, die auch Standardwerte enthalten, um die Komplexität des Programmaufrufs zu minimieren. Siege ermöglicht es Ihnen also, einen Webserver mit n Benutzern t-mal zu belasten, wobei n und t vom Benutzer definiert werden. Es zeichnet die Dauer des Tests sowie die Dauer jeder einzelnen Transaktion auf. Es meldet die Anzahl der Transaktionen, die verstrichene Zeit, die übertragenen Bytes, die Antwortzeit, die Transaktionsrate, die Parallelität und die Anzahl der Male, in denen der Server mit OK geantwortet hat, dh Statuscode 200.

Auch Belagerung sollte nur auf Servern ausgeführt werden, die Ihnen gehören oder auf denen Sie die ausdrückliche Genehmigung zum Testen haben. In einigen Ländern kann die Belagerung nicht autorisierter Websites als Verbrechen angesehen werden.

INSTALLATION

Siege wurde mit GNU autoconf erstellt. Wenn Sie mit GNU-Software vertraut sind, sollten Sie mit der Installation von Siege vertraut sein. Weitere Einzelheiten finden Sie in der Datei INSTALL.

Um Siege zu installieren unter Debin/Ubuntu , können Sie dies mit dem Befehl:

tun
$ sudo apt install siege

Für CentOS/RHEL , Installieren und aktivieren Sie epel Repository zur Installation von Siege :

# yum install epel-release
# yum install siege

Außerdem können Sie die Belagerung bauen aus der Quelle. Zu diesem Zweck benötigen Sie build-essential und Entwicklungspakete installiert.

For Debian/Ubuntu
$ sudo apt install build-essential  

For CentOS/RHEL   
# yum groupinstall 'Development Tools'  

Laden Sie dann Siege herunter und wie gezeigt aus den Quellen installieren.

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

Dann extrahieren Sie es:

$ tar -zxvf siege-latest.tar.gz

Gehen Sie auch in das entpackte Verzeichnis und installieren Sie es mit:

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

Belagerung konfigurieren

Sobald Sie die Installation abgeschlossen haben, können Sie Ihre Belagerung anpassen Konfigurationsdatei. Es befindet sich in /etc/siege/siegerc . Falls Sie sich entschieden haben, das Paket aus dem Quellcode zu erstellen, müssen Sie Folgendes ausführen:

$ siege.config

Außerdem wird dadurch siege.conf generiert Datei, die sich im Home Ihres Benutzers ~/.siege/siege.conf befindet .

Der Inhalt der Datei sollte in etwa so aussehen. Beachten Sie, dass ich die Protokolldatei auskommentiert habe und Zeit Anweisungen:

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

Auch mit der aktuellen Konfiguration, Belagerung imitiert 25 gleichzeitige Benutzer über 1 Minute.

Du bist jetzt bereit, deine Belagerung durchzuführen.

Testen der Website-Last mit Siege

Sie müssen nur die zu testende Website wie folgt angeben:

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

Wenn die Verfügbarkeit bei 100 % bleibt und es gibt keine fehlgeschlagenen Verbindungen, Ihr System hat gut funktioniert und es gab keine Probleme. Auch die Reaktionszeit sollten Sie im Auge behalten.

Führe Siege mit mehreren Websites durch

Sie können mehrere URLs testen, indem Sie Siege einstellen um sie aus der Datei zu lesen. Sie können die URLs in /usr/local/etc/urls.txt beschreiben so:

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

Auch um Belagerung zu erzählen Um die URLs aus der Datei zu testen, verwenden Sie -f Option wie folgt:

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

Sie können auch Befehlszeilenoptionen verwenden:

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

Schlussfolgerung

Belagerung ist ein leistungsstarkes Tool, um die Zuverlässigkeit Ihres Systems unter hoher Last zu messen. Sie sollten Ihre Tests immer mit Vorsicht ausführen, da der getestete Server während der Evaluierung möglicherweise unzugänglich wird. Stichworte


Linux
  1. Untersuchen Sie die Fähigkeiten von ELF-Binärdateien mit diesem Open-Source-Tool

  2. Der Lebenszyklus des Linux-Kernel-Testens

  3. 3 nützliche Dinge, die Sie mit dem IP-Tool in Linux tun können

  4. Webserver mit Lastenausgleich und MySQL-Server

  5. Richtlinien für Anwendungs- und Belastungstests

So sichern Sie Linux-Server mit SE Linux

Lastenausgleich mit HAProxy, Nginx und Keepalived unter Linux

So finden Sie den Standort Ihrer Server mit Traceroute und WHOIS

Wie man die Leistung von Webservern mit Apache Bench bewertet

So überwachen Sie Hosts mit dem Linux-Icinga-Überwachungstool

Website-Lasttest mit Apache JMeter auf Ubuntu 20.04