Jumat, 21 November 2008

Stress Test Aplikasi Web dengan Apache ab2

Salah satu tugas dari pembangun aplikasi adalah melakukan test terhadap aplikasi yang dibangunnya. Salah satu test yang perlu untuk dilakukan adalah Stress Test. Stress test aplikasi web bertujuan untuk melihat apakah aplikasi yang telah dibangun di atas sebuah web server dapat berjalan dengan stabil dengan beban yang diberikan. Dalam tersebut kita memberikan beban yang berbeda-beda kepada aplikasi dan melihat respon dari aplikasi web tersebut.

Untuk melakukan stress test aplikasi web tersedia berbagai macam tools. Salah satu yang menarik adalah Apache Ab (ab2 di Opensuse). Tools tersebut disediakan langsung oleh apache web server sebagai bagian dari system toolsnya. Penggunaannya sangat mudah dan tidak memerlukan banyak setting. Di Opensuse tools tersebut bisa didapatkan dengan menginstall paket apache2-utils. Untuk menggunakannya lakukan perintah berikut:

# ab -kc 10 -t 30 http://localhost/
Perintah di atas akan melakukan sepuluh koneksi secara bersamaan ke web server anda dan melakukan request secara terus menerus selama 30 detik. Hasil yang dilaporkan pun cukup menarik dan bisa diexport ke gnuplot format ataupun csv. Berikut contoh hasil dari perintah di atas:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Finished 50000 requests


Server Software: Apache/2.2.4
Server Hostname: localhost
Server Port: 80

Document Path: /
Document Length: 163 bytes

Concurrency Level: 10
Time taken for tests: 8.804394 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 49509
Total transferred: 22530617 bytes
HTML transferred: 8150978 bytes
Requests per second: 5678.98 [#/sec] (mean)
Time per request: 1.761 [ms] (mean)
Time per request: 0.176 [ms] (mean, across all concurrent requests)
Transfer rate: 2498.98 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 4
Processing: 0 1 4.2 1 282
Waiting: 0 1 4.2 1 282
Total: 0 1 4.2 1 282

Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 1
90% 2
95% 2
98% 4
99% 5
100% 282 (longest request)


Untuk melihat performance dari aplikasi web kita, ganti nilai -kc (concurrent connetion) dengan angka yang terus bertambah (hingga 50 sebagai contoh) dan tingkatkan batas waktu (-t) sehingga test dapat dilakukan dalam jangka waktu yang cukup untuk diukur. Kemudian, bandingkan hasil antara jumlah conccurent connection yang berbeda-beda tersebut. Selamat mencoba

Tidak ada komentar:

Posting Komentar