GNU/Linux >> Belajar Linux >  >> Linux

Menguji Beban Server Web dengan Siege Benchmark Tool

Pengantar

Pengepungan adalah uji regresi open source dan utilitas benchmark. Ini dapat menguji satu URL dengan jumlah pengguna simulasi yang ditentukan pengguna, atau dapat membaca banyak URL ke dalam memori dan menekankannya secara bersamaan. Program melaporkan jumlah total hit yang direkam, byte yang ditransfer, waktu respons, konkurensi, dan status pengembalian. Pengepungan mendukung protokol HTTP/1.0 dan 1.1, arahan GET dan POST, cookie, pencatatan transaksi, dan otentikasi dasar. Fitur-fiturnya dapat dikonfigurasi per pengguna.

Sebagian besar fitur dapat dikonfigurasi dengan opsi baris perintah yang juga menyertakan nilai default untuk meminimalkan kerumitan permintaan program. Jadi Pengepungan memungkinkan Anda untuk menekankan server web dengan n jumlah pengguna sebanyak t kali, di mana n dan t ditentukan oleh pengguna. Ini mencatat durasi waktu pengujian serta durasi setiap transaksi tunggal. Ini melaporkan jumlah transaksi, waktu berlalu, byte yang ditransfer, waktu respons, tingkat transaksi, konkurensi, dan berapa kali server merespons OK, yaitu kode status 200.

Juga Pengepungan hanya boleh dijalankan terhadap server yang Anda miliki atau yang memiliki izin eksplisit untuk menguji. Di beberapa negara, menggunakan pengepungan di situs web yang tidak sah dapat dianggap sebagai kejahatan.

INSTALASI

Pengepungan dibangun dengan autoconf GNU. Jika Anda sudah familiar dengan perangkat lunak GNU, maka Anda harus nyaman menginstal pengepungan Silakan lihat file INSTALL untuk lebih jelasnya.

Untuk memasang Pengepungan di bawah Debin/Ubuntu , Anda dapat melakukannya dengan perintah:

$ sudo apt install siege

Untuk CentOS/RHEL , Instal dan aktifkan epel repositori untuk menginstal pengepungan :

# yum install epel-release
# yum install siege

Anda juga dapat membangun Pengepungan dari sumber. Untuk tujuan itu, Anda harus memiliki build-essential dan paket pengembangan telah diinstal.

For Debian/Ubuntu
$ sudo apt install build-essential  

For CentOS/RHEL   
# yum groupinstall 'Development Tools'  

Kemudian unduh Pengepungan dan instal dari sumber seperti yang ditunjukkan.

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

Kemudian ekstrak:

$ tar -zxvf siege-latest.tar.gz

Buka juga direktori yang diekstrak dan instal dengan:

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

Mengonfigurasi Pengepungan

Setelah Anda menyelesaikan penginstalan, Anda dapat menyesuaikan pengepungan berkas konfigurasi. Itu terletak di /etc/siege/siegerc . Jika Anda telah memutuskan untuk membuat paket dari sumber, Anda harus menjalankan:

$ siege.config

Selain itu, Ini akan menghasilkan siege.conf file yang terletak di rumah pengguna Anda ~/.siege/siege.conf .

Isi file akan terlihat seperti ini. Perhatikan bahwa saya telah menghapus komentar pada logfile dan waktu arahan:

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

Juga Dengan konfigurasi saat ini, kepung akan meniru 25 pengguna secara bersamaan selama 1 menit.

Anda sekarang siap menjalankan pengepungan.

Menguji Muat Situs Web dengan Pengepungan

Anda hanya perlu menentukan situs web yang ingin Anda uji seperti ini:

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

Jika ketersediaan tetap 100% dan tidak ada koneksi yang gagal, sistem Anda bekerja dengan baik dan tidak ada masalah. Anda juga harus memperhatikan waktu respons.

Jalankan Pengepungan dengan Banyak Situs Web

Anda dapat menguji beberapa URL, dengan menyetel pengepungan untuk membacanya dari file. Anda dapat mendeskripsikan URL di /usr/local/etc/urls.txt seperti ini:

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

Juga untuk memberi tahu pengepungan untuk menguji URL dari file, gunakan -f pilihan seperti ini:

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

Anda juga dapat menggunakan opsi baris perintah:

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

Kesimpulan

Pengepungan adalah alat yang ampuh untuk mengukur keandalan sistem Anda saat berada di bawah beban tinggi. Anda harus selalu menjalankan pengujian dengan hati-hati karena server yang diuji mungkin tidak dapat diakses selama evaluasi. Tag


Linux
  1. Periksa kemampuan binari ELF dengan alat sumber terbuka ini

  2. Siklus hidup pengujian kernel Linux

  3. Menggunakan python-novaclient dengan Rackspace Cloud Server

  1. 3 hal berguna yang dapat Anda lakukan dengan alat IP di Linux

  2. Mulai dengan Server Cloud

  3. Server Web Linux Terbaik

  1. Memuat Server Web Seimbang dan Server MySQL

  2. Memuat pengujian di server web Anda menggunakan Pengepungan ( Alat Pembandingan )

  3. Cara membandingkan server Ubuntu Linux Anda dengan Phoronix Test Suite