Melakukan Stress Test Web Server menggunakan Siege
Untuk menguji batas kinerja web, Siege digunakan. Siege adalah uji regresi open source dan utilitas benchmark. Siege dikonfigurasi untuk membaca banyak URL ke dalam memori dan secara bersamaan melakukan stress terhadap sistem. Program melaporkan jumlah total hit yang direkam, byte yang ditransfer, waktu response, konkurensi, dan status pengembalian. Dalam pengujian, Siege menjalankan berbagai klien secara bersamaan, untuk menekankan berbagai URL di server web wiki. Tes stres dilakukan ke Wikipedia mirror dalam waktu 60 detik.
Kiwix adalah aplikasi agar wikipedia dapat di akses secara offline. Kita dapat mengukur kinerja Kiwix menggunakan siege. Untuk memudahkan proses pengukuran sebaiknya kita membuat script untuk menyalakan atau mematikan Kiwix pada server yang akan diukur, misalnya sebagai berikut,
kiwix-on.sh
echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve cd /usr/local/src/kiwix-0.10-x86_84/bin/ /usr/local/src/kiwix-0.10-x86_84/bin/kiwix-serve --port=8080 /usr/local/src/kiwix-0.10-x86_84/bin/wikipedia_id_all_novid_2018-07.zim & /usr/local/src/kiwix-0.10-x86_84/bin/kiwix-serve --port=8081 /usr/local/src/kiwix-0.10-x86_84/bin/wiktionary_id_all_novid_2018-07.zim &
kiwix-off.sh
echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve echo 123456 | sudo -S killall kiwix-serve
Instalasi Siege sangat mudah menggunakan perintah berikut,
sudo su apt update apt -y install siege
Agar siege dapat berjalan dengan mudah, sebaiknya kita juga membuat sebuah file yang berisi URL kiwix yang akan digunakan saat siege mengukur kiwix sebagai berikut (misalnya menggunakan vi),
vi ~/.siege/url-192.168.0.1.txt
Isi file,
http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/ http://192.168.0.1:8080/search?content=wikipedia_id_all_novid_2018-07&pattern=Onno+W.+Purbo http://192.168.0.1:8080/skin/jquery-ui/jquery-ui.min.js http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Onno_W._Purbo.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Daerah_Khusus_Ibukota_Jakarta.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Lambang_Daerah_Khusus_Ibukota_Jakarta.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Kiwix.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Perangkat_lunak_bebas.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Richard_Stallman.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Indonesia.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Matematika.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Ilmu_fisik.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Reaksi_asam_basa.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Asam.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Biologi.html http://192.168.0.1:8080/wikipedia_id_all_novid_2018-07/A/Organisme.html http://192.168.0.1:8081/wiktionary_id_all_novid_2018-07/ http://192.168.0.1:8081/wiktionary_id_all_novid_2018-07/A/bahasa_Indonesia.html http://192.168.0.1:8081/wiktionary_id_all_novid_2018-07/A%2fki%c3%aan%2dkap%2dkut%2ehtml
Figure 1. Internet-Offline System Availability (%)
Figure 1. menunjukkan Availability (%) pada saat dilakukan stress test pada sistem menggunakan Siege. Di atas 20 klien secara simultan menggunakan sistem akan menurunkan availability RaspberryPi3. Penurunan availability mini PC Asus mulai muncul di sekitar 20 klien, dan penurunan lebih parah setelah lebih dari 80 klien secara bersamaan. Mesin mesin virtual i5 tampaknya jauh lebih tahan dan mampu menahan beban lebih dari 150 klien dengan hanya sedikit penurunan availability.
Figure 2. Hit pada Internet-Offline system
Figure 2. menunjukkan klik yang diterima seiring dengan bertambahnya jumlah klien. RaspberryPi3 hanya dapat menerima hit terendah, sekitar 1000-1500 hit, di antara empat (4) sistem. Sedangkan Asus Mini PC dapat menerima hit, sekitar 9.000-10.000 hit. Mesin i5 dapat menerima di atas 15000 hingga 25000 hit, sekitar 25 kali kemampuan RaspberryPi3. Sistem dengan empat core mampu menerima, sekitar 20%, hit lebih tinggi dibandingkan dengan mesin single core.
Figure 3. Successful transaction saat Siege Web Stress
Figure 3. menunjukkan transaksi yang berhasil ditangani oleh sistem; itu cukup mirip dengan karakteristik hit yang diterima oleh sistem. RaspberryPi3 hanya mampu menangani sekitar 700-900 transaksi. Asus Mini PC dapat menangani 3000-4000 transaksi dengan baik. Mesin virtual i5 dapat menangani transaksi yang lebih tinggi, sekitar 6000-8000 transaksi. Dengan demikian, RaspberryPi3 hanya mampu memenuhi 10% dan 20% kemampuan masing-masing i5 dan Asus Mini PC. Sistem dengan empat core mampu menerima, sekitar 20%, transaksi sukses yang lebih tinggi dibandingkan dengan mesin single core.
Figure 4. Transaction Rate saat Siege Web Stress
Figure 4. menunjukkan tingkat transaksi, dalam transaksi per detik, untuk banyak klien yang membebani sistem. RaspberryPi3 hanya mampu menangani sekitar 20-30 transaksi per detik. Asus Mini PC dapat menangani 5-6 kali dibandingkan dengan RaspberryPi3 untuk lebih dari 150 transaksi per detik. Mesin i5 mampu menangani beban yang jauh lebih tinggi hingga sekitar 250-400 transaksi per detik atau sepuluh kali lebih tinggi dari RaspberryPi3. Sistem empat core dapat melayani, sekitar 20%, tingkat transaksi yang lebih tinggi dibandingkan dengan mesin single core.
Figure 5. Concurrency saat Siege Web Stress
Figure 5. menunjukkan kemampuan konkurensi sistem dalam menangani beban klien. Semua sistem mampu memenuhi konkurensi menjadi sama dengan jumlah klien hingga 20 klien yang mengakses. Pada 30 klien, konkurensi RaspberryPi3 dan Asus Mini PC menjadi rata, tidak mampu mengimbangi jumlah klien yang mengakses. Pada 50 klien, mesin virtual i5 tidak lagi mampu mengimbangi jumlah klien yang mengakses. Namun, konkurensi mesin virtual i5 agak menurun tetapi tidak datar dan mencoba mengikuti jumlah klien yang mengakses.
Figure 6. Fail transaction saat Siege Web Stress
Gambar 6. menunjukkan transaksi yang gagal sebagai fungsi dari jumlah klien yang mengakses sistem. Di RaspberryPi dan Asus Mini PC, kegagalan transaksi mulai muncul setelah 30 klien mengakses sistem. Pada 40 klien, transaksi gagal meningkat drastis. Menariknya, mesin i5 mampu menangani transaksi dengan cukup baik dengan transaksi gagal di bawah lima hingga di atas 100 klien.
Figure 7. Longest Transaction saat Siege Web Stress
Gambar 7. menampilkan transaksi terpanjang saat stress test pada sistem. Semua sistem tampaknya menangani beban dengan benar untuk 20 klien. RaspberryPi3 dan Asus Mini PC menunjukkan lompatan dalam transaksi terlama setelah 30 dan lebih banyak klien memuat. Mesin virtual i5 mengalami peningkatan signifikan dalam transaksi terlama setelah memuat lebih dari 50 klien.
Figure 8. Responds Time (detik) saat Siege Web Stress
Gambar 8. menunjukkan waktu respon dalam ms untuk transaksi yang masuk sebagai fungsi dari jumlah klien. RaspberryPi menunjukkan peningkatan linear dalam waktu respons sebagai fungsi dari jumlah klien, dari satu klien hingga sekitar 20 klien. Di atas 20 klien, waktu respons RaspberryPi3 tampaknya tidak stabil. Mesin mini PC dan Asus i5 tampaknya cukup tahan terhadap permintaan tes stres transaksi dan dapat menahan waktu respons di bawah 0,4 detik hingga 100 klien.
Sangat menarik untuk dicatat bahwa interface jaringan membatasi kinerja mesin virtual i5. Tabel berikut menunjukkan klik rata-rata, tingkat transaksi rata-rata, transaksi sukses rata-rata, dan transaksi gagal rata-rata untuk mesin virtual inti tunggal dan empat inti dengan LAN dan penghubung langsung dengan klien di host yang sama.
Table: Perbandingan Kinerja LAN dan direct bridge saat Siege Web Stress
ave. hits average transaction/sec ave. successful transactions ave. fail transactions 1 core LAN 15304 255 5300 14.8 1 core nolan 17235 287 6084 1.4 4 core LAN 19429 342 6711 14.1 4 core nolan 22365 373 7844 4.7
Ini menunjukkan bahwa mesin virtual dengan sambungan bridging secara langsung memiliki kinerja yang lebih tinggi dan lebih sedikit transaksi yang gagal. Kinerja yang lebih tinggi juga diamati pada mesin dengan jumlah core yang lebih banyak.