Pages

Sabtu, 03 Mei 2014

Httperf : Software (tools) yang melakukan testing secara otomatis

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 :

Tidak ada komentar:

Posting Komentar