Simple Stress Test With Locus.io

Rizal Diantoro
Sulang
Published in
3 min readApr 3, 2018

Halo, kali ini saya akan melakukan uji coba stress test terhadap web suling yang dapat diakses di http://52.148.80.48:8000 menggunakan Locust.io. Menurut saya pribadi, melakukan stress test menggunakan Locust.io terbilang mudah, apalagi locust.io ini memiliki interface yang membuatnya lebih mudah untuk digunakan dan juga mengolah data yang dihasilkan kedalam grafik sehingga mudah untuk dapat dilakukan pemantauan.

Buat locustfile.py

File py ini berisi fungsi-fungsi yang akan kita lakukan uji stress test. Berhubung suling belum memiliki banyak fitur, maka fungsi yang kami ujicobakan untuk sekarang ini untuk meload tampilan awal. Kami masih melakukan banyak api call untuk sekarang ini, sehingga jika kami mengujicobakan ke fungsi tersebut, kami seperti melakukan stress test terhadap apps lain.

from locust import HttpLocust, TaskSet, taskclass UserBehavior(TaskSet):
@task(1)
def index(self):
self.client.get("/")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000

Cukup mudah untuk dipahami kan file locustfile.py berikut?. Kita mendefinisikan fungsi yang akan di test, dalam class UserBehavior, yang didalamnya berisi test-test yang akan diujikan. Sehingga sebenarnya bisa terdapat lebih dari satu test dalam kelas ini.

Setelah membuat file locustfile tersebut, kita bisa menjalankannya dengan perintah

locust --host=http://52.148.80.48:8000

— host disini, diisi dengan website yang akan kita ujicobakan. Setelah ini kita dapat membuka interface locust yang dapat diakses di localhost:8089

Kami coba untuk membuat 10000 user, dengan 1000 Hatch rate.

Aplikasi kami mulai tidak bisa menerima request ketika jumlah user yang mengakses sebanyak 1500 user lebih.

Lalu kami turunkan uji coba, untuk hanya membuat 1500 user dalam ujicoba.

Ternyata benar, kegagalan terjadi ketika jumlah users yang mengakses sebanyak 1500 lebih. Maka kami turunkan kembali menjadi 1000, karena menurut kami angka 1000 masih cukup masuk akal dengan keadaan sebenarnya dalam aplikasi kami nanti saat digunakan.

Untuk 1000 users, kami tidak menemukan error sedikitpun.

Dalam percobaan kali ini, kami memang masih menggunakan server standar, yang kami desain hanya untuk PPL. Karena kami memiliki keterbatasan dari segi finansial. Kami menggunakan azure milik pribadi dengan spesifikasi Standard D2s v3 (2 vcpus, 8 GB memory).

Kami menggunakan spesfikasi terendah dalam kelas ini, dengan 2 core dan 8 Gb Ram.

Setelah melakukan uji coba, ini grafik yang dihasilkan di dashboard azure kami. Setelah kami lihat, sepertinya yang tidak mampu menampung request yang banyak pada ujicoba diatas terletak pada bandwith yang ada pada server kami.

Dengan menggunakan docker sebagai sarana bantu deployment, membuat tim kami dengan mudahnya mampu memindahkan server ini keserver lain yang memiliki spesifikasi lebih tinggi. Sehingga sangat memungkinkan setelah proses PPL ini selesai dan aplikasi ini ingin digunakan seutuhnya, server yang digunakan bisa dipindah dahulu keserver yang lebih mempuni.

Sekian…

--

--