Web Sunuculara Yönelik Performans/DoS Testleri

Web sunucularının performansını ölçme amaçlı çeşitli araçlar vardır. Bunlar arasında kolay kullanımı ve esnekliğinden dolayı ab(Apache HTTP server benchmarking tool) dikkat çeker. Ab her ne kadar Apache projesi olsa da herhangi bir web sunucuyu test etme amaçlı kullanılabilir.

Ab ile çeşitli özelliklerde HTTP istekleri göndererek sunucunun işleme kapasitesi ölçülebilir. Ab aynı zamanda basit bir DOS aracıdır, hedef sisteme eş zamanlı yüzlerce HTTP GET/POST/HEAD istekleri göndererek web sunucunun cevap veremez hale gelmesini sağlayabilir.
Basit kullanımı:

# ab -c 900 -n 1000 http://www.sayfa.com/
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.sayfa.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests
Server Software:        Apache-Coyote/1.1
Server Hostname:        www.sayfa.com
Server Port:            80

Document Path:          /
Document Length:        4767 bytes

Concurrency Level:      900
Time taken for tests:   6.501 seconds
Complete requests:      1000
Failed requests:        0
Broken pipe errors:     0
Total transferred:      5339849 bytes
HTML transferred:       4893919 bytes
Requests per second:    153.82 [#/sec] (mean)
Time per request:       5850.90 [ms] (mean)
Time per request:       6.50 [ms] (mean, across all concurrent requests)
Transfer rate:          821.39 [Kbytes/sec] received

Connnection Times (ms)
min  mean[+/-sd] median   max
Connect:        7   119  655.6     28  6246
Processing:    28   405  737.2     69  4144
Waiting:       20   405  737.2     69  4144
Total:         28   525 1018.6    101  6419

Percentage of the requests served within a certain time (ms)
50%    101
66%    425
75%    523
80%    602
90%   1192
95%   3197
98%   4177
99%   6236
100%   6419 (last request)
You have new mail in /var/mail/root

Çıktıyı inceleyecek olursak sayfa isteğimiz en hızlı 101, en yavaş 6419 ms sürmüş. Saniyede 153 HTTP GET isteği göndermiş.

Ab parametreleri:

-n parametresi toplamda kaç adet HTTP isteğinin gönderileceğini belirler
-k parametresi HTTP bağlantılarının keepalive kurulacağını belirler
-c parametresi anlık kaç adet HTTP bağlantısı kurulacağını belirler
-t parametresi saniye cinsinden testin ne kadar süreceğini belirler

Ab ile sadece HTTP GET değil, POST istekleri de gönderilebilir. Böylece web sayfası üzerindeki dinamik alanlar  ve dinamik alanlara veri sağlayan veritabanı performansı da test edilmiş olur.

#ab -n 1000 -T ‘application/x-www-form-urlencoded’ -p post_me.txt http://www.sayfa.com/login.aspx

Ek olarak siege, httperf, httping gibi araçlar da web sunucu performans testlerinde kullanılabilir.