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.
Web Sunuculara Yönelik Performans/DoS Testleri
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://zeustech.net/yuebofa.php
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
Ek olarak siege, httperf, httping gibi araçlar da web sunucu performans testlerinde kullanılabilir.