Dalam dunia nyata beragam
tool dapat digunakan untuk melakukan pengujian performansi web server, misalnya Paessler
Webserver Stress Tool yang berbayar maupun httperf yang berupa open
source tool. Kali ini admin akan membahas secara singkat mengenai open source tool httperf tersebut. Httperf merupakan salah satu tool yang dapat
dimanfaatkan sebagai media dalam melakukan pengujian terhadap kemampuan reply rate, standar deviasi dan error rate suatu web server (David M. 1998).
Uji performansi terhadap
sistem web server yang ada menentukan
seberapa baik performanya, sehingga dapat dilakukan suatu perubahan-perubahan
untuk meningkatkan performansinya (Obaidat 2010).
Uji performansi memiliki
bentuk-bentuk tersendiri sebagai berikut:
1) Performance Test
Uji performansi digunakan
untuk menguji setiap bagian dari suatu web server untuk menemukan teknik
terbaik untuk mencapai optimasi ketika trafik web meningkat.
2) Load Test
Load test dilakukan dengan
pengujian website menggunakan estimasi trafik dari sebuah website yang mampu
dilayani. Caranya adalah mendefinisikan waktu maksimum sebuah halaman web
dimuat. Pada akhir pengujian dilakukan pembandingan seberapa maksimum waktu
yang dibutuhkan untuk membuka halaman web pada sebuah web server.
3) Stress Test
Stress test adalah berupa
simulasi serangan “brute force” yang
menjalankan muatan atau permintaan secara berlebihan menuju web server. Tujuan stress test adalah untuk estimasi muatan maksimum sebuah web server sanggup menanganinya.
Dalam pengujian performansi web server, tujuan utamanya adalah
mengetahui tingkat kejenuhan dari web
server. Komponen yang dibutuhkan dalam pengujian web server adalah sebagai berikut:
1) Sebuah server yang menjalankan perangkat
lunak web server
2) Satu
atau lebih klien yang menjalankan perangkat lunak pembangkit paket
3) Jaringan yang menghubungkan klien dengan
server
Web
server sendiri adalah program yang menerjemahkan alamat URL
baik dalam bentuk nama file, yang kemudian mengirimkan kembali file tersebut
maupun dalam bentuk nama program dan menjalankan program itu lalu mengirimkan
kembali output dari program tersebut melalui internet (Ben & Peter 1999).
Pada dasarnya tugas web
server hanya ada dua, yaitu:
1. Menerima permintaan (request) dari klien, dan
2. Mengirimkan apa yang diminta oleh klien (response)
Httperf
adalah program untuk mengukur kinerja atau performansi dari web server yang
dibuat oleh David Mosberger dari HP Labs.Httperf
menyediakan fitur yang fleksibel dalam pembuatan beban kerja sesuai dengan
parameter yang diberikan padanya (Rasian 2009). Httperf merupakan sebuah tool untuk sistem operasi turunan UNIX. Httperf dapat membangkitkan sejumlah
paket load dan mendukung HTTP/1.0 dan HTTP/1.1 (Bullock 2007).
Dalam sebuah pengujian web server sederhana, klien membuat
sejumlah besar permintaan dari web server,
sehingga akan terukur throughput yang
berupa jumlah reply per second dari web server tersebut.
Cara paling mudah dalam
mengukur performansi sebuah web server
adalah dengan mengirimkan permintaan ke server dengan rate tertentu dan mengukur waktu permintaan tadi tiba kembali.
Pengujian dilakukan beberapa kali dengan meningkatkan permintaan secara monoton
hingga pada rate tertentu didapatkan server menjadi jenuh (saturated).
Hasil pengukuran dari
httperf ini memberikan data mentah tentang kinerja dari web server, namun berbeda dari kondisi pada dunia nyata, hal ini
dikarenakan pada pengujian web server
ini hanya satu file yang dilakukan permintaan, sehingga algoritma caching web server tidak teruji secara keseluruhan (Julian 2001).
Untuk mulai menggunakan httperf, langkah yang dilakukan pertama
adalah instalasi aplikasi tersebut ke komputer. Apabila menggunakan Ubuntu atau
Linux Mint, cukup ketikkan perintah berikut :
apt-get install httperf
Untuk beberapa kasus,
httperf perlu di-compile sendiri.
Misalnya saja ketika request per detik yang diberikan ke server berjumlah
sangat banyak. Oleh karena itu, berikut ini beberapa langkah singkat untuk
mengcompile httperf :
1. Buka file /usr/include/linux/posix_types.h, kemudian ubah
konstanta __FD_SETSIZE dari 1024 menjadi 50000
2. Download source code httperf
3. Extract file yang telah diunduh ke suatu direktori, kemudian
masuk ke direktori hasil ekstraksi tadi.
4. Setelah itu ketikkan perintah ./configure
5. Ketikkan perintah make dan make install
6. httperf pun siap digunakan jika tidak ada error yang terjadi
Kemudian, jika ingin
menggunakan httperf ini untuk menguji
performa, ada beberapa option penting yang perlu diperhatikan, yaitu :
- –server=IP/domain webserver
: option ini digunakan untuk menentukan lokasi server yang ingin kita uji.
- –uri=RESOURCE : option ini
digunakan untuk menentukan file apa yang ingin diakses oleh httperf, apabila
ingin memasukkan root directory dari website, tinggal masukkan saja / (slash)
- –num-conns=INT : option ini
digunakan untuk menentukan berapa kali koneksi ke server akan dilakukan
- –rate=INT : option ini
digunakan untuk memberitahu httperf, berapa request per detik yang harus
dikirimkan
Sebagai contoh, jika kita
ingin menguji suatu website di localhost, dengan file yang ingin diakses adalah
index.php, dan httperf ingin melakukan koneksi sebanyak 1000x dengan 100
request/detik, maka perintahnya adalah seperti ini :
httperf --server=localhost
--uri=/index.php --num-conns=1000 --rate=100
Dan hasilnya dapat dilihat seperti gambar 1, yakni :
gambar 1
Pada
gambar, terdapat connection-rate,
connection-time, request rate, reply rate, reply time, errors, dan berbagai
macam keterangan lainnya. Keterangan mengenai hasil ini sebetulnya sudah cukup
jelas, atau dapat juga dilihat di manual httperf. Tetapi ada 1 poin yang perlu
perhatian khusus, yaitu di bagian Errors, ada error yang namanya fd-unavail. Error ini disebabkan httperf
yang tidak dapat membuat socket baru akibat dari open file descriptor yang digunakan sudah terlalu banyak. Dan ini
menyebabkan hasil ujicoba tidak valid, karena masalah berasal dari sisi klien.
Untuk itulah, kenapa di atas, disarankan untuk mengkompilasi httperf sendiri.
Error fd-unavail tidak boleh
bernilai selain 0 atau ujicoba anda akan mendapatkan hasil yang tidak valid. Selain
melakukan proses kompilasi sendiri, yang perlu dilakukan untuk menghindari
error tersebut adalah mengetikkan perintah ulimit seperti di bawah ini sebelum
httperf berjalan :
ulimit -n 50000
Standar matrik keluaran dari
httperf dapat dikelompokkan sebagai berikut (Theodore 2003) :
a. Total Section
Menampilkan jumlah total
koneksi TCP yang dibuat, jumlah permintaan/ request, jumlah respon, dan waktu
keseluruhan dari pengujian yang dilakukan.
b. Connection Section
Menjelaskan kinerja koneksi
TCP yang dihasilkan selama pengujian.
c. Request Section
Menampilkan jumlah request
per second yang didapatkan dari pengujian.
d. Reply Section
Menampilkan statistik dari
jumlah reply per second terhadap pengujian yang dilakukan.
e. Miscellaneous Section
Menyediakan laporan tentang
penggunaan CPU dan pemanfaatan jaringan pada mesin klien
f. Error Section
Menampilkan jumlah error
yang ditemukan selama pengujian. Pada error section ini terdapat bagian
client-timo yang sangat berguna untuk mengetahui titik jenuh (saturated point)
suatu web server.
Pada dasarnya, httperf
sudah merupakan aplikasi yang cukup kuat untuk menguji kinerja sistem web server. Hanya saja, apabila kita
ingin melakukan beberapa kali percobaan, misalkan dengan nilai request/detik
yang berbeda-beda, tidak dapat dilakukan oleh httperf. Kemudian output
dari httperf akan muncul
langsung ke terminal, sehingga untuk mencatat hasilnya, kita hanya bisa
mencatat secara manual atau membuat sebuah script untuk mencatat hasilnya.
Setiap software atau aplikasi pasti memiliki kelebihan dan kekurangannya
masing-masing, sehingga perlu dilakukan perbaikan dan memunculkan aplikasi atau
software yang lebih baik dari sebelumnya.
Referensi :