Server selesai diconfig, sistem / aplikasi web sudah tidak ada error, jaringan dipastikan ready, apakah sudah siap untuk live production…?
Tunggu dulu (jangan) kita juga harus memperkirakan berapa banyak user yang nantinya akan live menggunakan sistem / aplikasi tersebut, kita juga harus memperkirakan berapa banyak dan berapa besar data diterima dan dikirim oleh si server, pun juga request dari pengguna sistem… Bagaimana kalau sudah runing live ternyata server tidak mampu alias kuwalahan untuk menerima banyak request dalam satu waktu, atau banyak data yang ditransfer (upload) ke server dalam waktu yang bersamaan.
Nahhh, untuk mengetahui, kita bisa uji coba server dan jaringan yang akan digunakan sebagai live production tersebut. Istilahnya stress testing atau stress benchmarking.
Toolsnya apa ndri..?
Gunakan saja ab, tools yang sudah secara build in disertakan pada waktu kita menginstall apache2.
Caranya gimana ndri…?
Caranya, pertama kita create dummy file (jika belum memiliki file yang akan digunakan untuk testing…
$ time dd if=/dev/zero of=test.pdf bs=500000000 count=1
1+0 records in
1+0 records out
500000000 bytes (500 MB) copied, 5,77993 s, 86,5 MB/s
real 0m5.832
suser 0m0.000s
sys 0m1.140s
$ ls -l
total 488288
-rw-r--r-- 1 andri andri 500000000 2010-05-07 01:33 test.pdf
Nahhh, udah punya file yang mau kita pakai untuk mengHAJAR server kita, besarnya 500 Mb. Saatnya kita test :
$ ab -n 100 -c 10 -p test.pdf http://localhost/
artinya kita akan men-test server tersebut dengan 100 request (-n) dengan 10 connection (-c) yang mengupload file test.pdf (-p) sebesar 500 Mb.
Kita lihat apa kata ab :
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient).....done
Server Software: Netscape-Enterprise/6.0
Server Hostname: localhost
Server Port: 80
Document Path: /
Document Length: 309 bytes
Concurrency Level: 4
Time taken for tests: 45.042 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 57000 bytes
Total POSTed: 50000013100
HTML transferred: 30900 bytes
Requests per second: 2.22 [#/sec] (mean)
Time per request: 1801.683 [ms] (mean)
Time per request: 450.421 [ms] (mean, across all concurrent requests)
Transfer rate: 1.24 [Kbytes/sec] received
1084056.23 kb/s sent
1084057.47 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 455 374.5 444 1325
Processing: 443 1347 393.0 1332 2307
Waiting: 1 896 384.3 889 1817
Total: 1325 1802 644.2 1348 3195
Percentage of the requests served within a certain time (ms)
50% 1348
66% 1817
75% 2661
80% 2664
90% 2688
95% 2711
98% 3142
99% 3195
100% 3195 (longest request)
Untuk mengetahui sampai mana server kuat, lakukan sampai menemui error / failed di output.
Dan untuk mengetahui parameter ab lebih lengkap, silahkan kunjungi : http://httpd.apache.org/docs/2.0/programs/ab.html
Sekian, semoga bermanfaat 😉