Post Pic

Benchmark Performa Web Server dengan ApacheBench (ab)

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.


Yang di tulis di atas, adalah terjemahan bebas dari deskripsi yang diberikan di dokumentasi Apache. Walaupun memang ab dibuat oleh tim apache, pada prinsipnya semua web server bisa di benchmark oleh aplikasi ini.

Instalasi

Di 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 Benchmark

ab -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).


3 Komentar

pard1
27 September 2009

Terima kasih atas infonya… :)

9 October 2009

mantap gan, numpang belajar, bagus bgt artikel2nya.. sekalian minta link nya jg yah buat dipasang d blog sy..

22 December 2009

Makasih Mas. Penjelasan baik sekali =D