ab adalah alat untuk proses benchmark Apache http server. Dia di desain
untuk memberikan Anda gambaran performa instalasi apache Anda. Secara
khusus akan menampilkan kepada Anda, seberapa banyak request per detik
yang bisa dilayani oleh instalasi apache Anda.
InstalasiDi Ubuntu atau Debian, ApacheBench atau ab adalah bagian dari paket apache2-utils. Jadi pastikan paket tersebut terinstall.
sudo apt-get install apache2-utils
Contoh Proses Benchmarkab -c 20 -n 1000
http://domaincontoh.com/test/Dimana,
- -c 20 adalah jumlah concurrent connection, sebanyak 20 koneksi secara bersamaan.
- -n 1000 adalah jumlah request yang mau dikirim, sebanyak 1000 request.
- http://domaincontoh.com/test/ adalah url yang mau di test.
Contoh output dari proses benchmark.
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 domaincontoh.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
Completed 1000 requests
Finished 1000 requests
Server Software: nginx
Server Hostname: domaincontoh.com
Server Port: 80
Document Path: /test/
Document Length: 178 bytes
Concurrency Level: 20
Time taken for tests: 0.129 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 371000 bytes
HTML transferred: 178000 bytes
Requests per second: 7738.38 [#/sec] (mean)
Time per request: 2.585 [ms] (mean)
Time per request: 0.129 [ms] (mean, across all concurrent requests)
Transfer rate: 2803.65 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.4 1 11
Processing: 0 1 0.3 1 3
Waiting: 0 1 0.3 1 3
Total: 1 3 1.4 2 13
Percentage of the requests served within a certain time (ms)
50% 2
66% 2
75% 2
80% 3
90% 3
95% 3
98% 11
99% 12
100% 13 (longest request)
Dari statistik di atas, yang mungkin menarik untuk dilihat adalah baris
Requests per second. Itu adalah nilai dari hasil benchmark. Tapi jangan abaikan juga bagian lain, misalnya
Complete requests,
Failed requests, atau
Write errors.
Pastikan tidak ada failed requests atau write errors. Jika ada, maka
Anda harus mencari tahu apa yang menyebabkan error tersebut.
Seputar angka-angka Jumlah request yang dicontohkan di atas, sebanyak 1000 request adalah
contoh yang sangat kecil, dalam proses benchmark sesungguhnya
angka-angka seperti 20000 atau 50000 mungkin lebih relevan. Dan jumlah
concurrent connection sebanyak 20 juga termasuk kecil. Anda mungkin bisa
mencoba angka yang lebih besar seperti 100 concurrent connection.
Yang Harus di Perhatikan
- Benchmark ditujukan ke web server yang Anda kelola. Bukan ke web
server pihak lain, karena kalau ditujukan ke web orang lain, itu bisa
dikategorikan sebagai serangan DOS.
- Benchmark harus dijalankan di komputer terpisah dari web server.
Aplikasi benchmark bisa mengambil resource komputer secara agresif, jadi
agar data benchmarking lebih valid, aplikasi benchmark harus dijalankan
di komputer yang terpisah dari web server yang akan di benchmark.
- Pastikan semua komponen dari web Anda, baik yang dinamik atau statik di benchmark.
- Sebelum proses stress test dijalankan, siapkan aplikasi untuk
memonitor seluruh proses benchmarking ini. Terutama yang berkaitan
utilisasi hardware server yang di benchmark.Yang Harus di Monitor
Saat stress test dijalankan, monitor semua aspek yang berhubungan
dengan penggunaan resources server. Seperti load average, load
processor, input/output atau penggunaan memori server.
Beberapa aplikasi atau tools untuk memonitor.
- ps – untuk memonitor proses yang sedang berjalan.
- top – untuk melihat penggunaan processor, memori dan aplikasi apa saja yang paling banyak menggunakan resources server.
- vmstat
- sysstat (iostat, mpstat, sar, pidstat)
- dstat – aplikasi monitoring yang menggabungkan output dari vmstat, iostat, netstat
- aplikasi untuk monitoring bandwidth
Yang tidak kalah penting dari semua itu, adalah monitoring manual.
Maksudnya, saat stress test sedang dilakukan, Anda bisa langsung mencoba
mengakses halaman web yang sedang di test. Lalu amati apakah web masih
bisa dibuka dengan normal atau mengalami masalah (seperti lambat, tidak
responsif atau malah error).