HTTP Stres Test

Bir yazılımın yüklenmeye ne kadar dayanabildiğini test etmek için stres testi yapılır. Ancak bunun kullanıcılar eliyle yapılması hataların geç fark edilmesine ve hatta servislerin yoğun kullanılmasından ya da hatalı kodlanmasından oluşan hatalardan çökmesine neden olabilir. Bu nedenle servis kullanıma sunulmadan önce stres testi yapılmalıdır.

web uygulamalarının ne kadar yüklemeye dayanabileceğini test etmek için http stres testi yapılır. (https://en.wikipedia.org/wiki/Stress_testing_(software))

Bu amaçla geliştirilmiş bir çok yazılım mevcut. Ücretsiz ve işini hakkıyla yapan bir uygulama olan Siege (türkçe kuşatma) GNU/Linux tabanlı bir uygulama. HTTP, HTTPS, FTP protokollerini destekliyor.

Kaç kullanıcının, kaç paralel bağlantıyla session oluşturacağı simüle ediliyor ve komut satırından konfigüre edilebiliyor.

Önce program http://www.joedog.org/pub/siege adresinden indirilmeli. (Windows altında cygwin ile çalıştırılabiliyor)

SSL desteğinden aktifleştirilebilmesi için sistemde openssl geliştirici kütüphaneleri yüklü olmalı.

Parametreleri şunlar:

user@ubuntu:~/siege$ siege
unable to open file: /usr/etc/urls.txt: No such file or directory
SIEGE 2.70
Usage: siege [options] siege [options] URL
siege -g URL
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.
-g, --get GET, pull down HTTP headers and display the
transaction. Great for application debugging.
-c, --concurrent=NUM CONCURRENT users, default is 10
-i, --internet INTERNET user simulation, hits URLs randomly.
-b, --benchmark BENCHMARK: no delays between requests.
-t, --time=NUMm TIMED testing where "m" is modifier S, M, or H
ex: --time=1H, one hour test.
-r, --reps=NUM REPS, number of times to run the test.
-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.
-d, --delay=NUM Time DELAY, random delay before each requst
between 1 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

Copyright (C) 2010 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.

Örnek:
root@ubuntu:/home/user/siege# siege http://www.google.com -d1 -r10 -c25
** SIEGE 2.70
** Preparing 25 concurrent users for battle.
The server is now under siege...
HTTP/1.1 302 0.19 secs: 262 bytes ==> /
HTTP/1.1 302 0.20 secs: 260 bytes ==> /
HTTP/1.1 302 0.20 secs: 262 bytes ==> /
HTTP/1.1 302 0.22 secs: 260 bytes ==> /
HTTP/1.1 302 0.23 secs: 262 bytes ==> /

HTTP/1.1 200 0.57 secs: 7601 bytes ==> /?gfe_rd=cr&ei=RL1mVsemNtGv8wfNtr3wAw
HTTP/1.1 302 0.15 secs: 262 bytes ==> /
HTTP/1.1 200 0.45 secs: 7605 bytes ==> /?gfe_rd=cr&ei=Rb1mVv6LBs-v8wfuzbaICA
HTTP/1.1 302 0.13 secs: 262 bytes ==> /
HTTP/1.1 302 0.13 secs: 262 bytes ==> /
HTTP/1.1 200 0.61 secs: 7633 bytes ==> /?gfe_rd=cr&ei=Rb1mVqGNA82v8wfBrL2QAQ
HTTP/1.1 302 0.14 secs: 262 bytes ==> /
HTTP/1.1 302 0.14 secs: 262 bytes ==> /
HTTP/1.1 302 0.16 secs: 262 bytes ==> /
HTTP/1.1 302 0.13 secs: 260 bytes ==> /
^C
Lifting the server siege... done.
Transactions: 308 hits
Availability: 100.00 %
Elapsed time: 14.03 secs
Data transferred: 1.16 MB
Response time: 0.59 secs
Transaction rate: 21.95 trans/sec
Throughput: 0.08 MB/sec
Concurrency: 13.01
Successful transactions: 329
Failed transactions: 0
Longest transaction: 5.48
Shortest transaction: 0.13

FILE: /var/siege.log

siege.log

 

siege http://www.google.com -d1 -r10 -c25 komutundaki c25= 25 kullanıcıyı simüle eder, r10= 10 defa tekrarlar, toplamda 250 işlem yapar.

Peki form POST ve GET işlemleri destekleniyor mu?

Evet, URL parametresine tam script adı ve tagı yazılmalı:

www.bart.com/cgi-bin/aye.pl POST name=bart&last=simpson

http://www.hjs.com/cgi-bin/doh.cgi?name=homer&last=simpson {GET için}

 

Bu amaçla geliştirilmiş farklı programlar da var. Buradan bir göz atabilirsiniz.

 

 

ekremoral

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir