Cara Buat Stress/Load Test Website Yang Betul
Stress test atau load test ni penting bagi mereka yang melakukan sales online lagi-lagi yang guna Facebook Ads, Google Ads dan iklan berbayar yang lain.
Ini untuk ukur sejauh mana kapasiti pelawat(visitor) laman web kita yang boleh ditampung oleh Web Server Hosting kita. Sebenarnya, bukan laman web kita yang tampung kapasiti visitor tetapi Web Server Hosting kita.
Web server adalah software dan hardware yang menerima permintaan (request) melalui HTTP/HTTPS iaitu protokol yang dicipta untuk buka laman web kita di internet. Hosting pula adalah tempat kita letak fail-fail website kita supaya web server tadi dapatlah buka fail-fail tersebut dan memaparkan website kita kepada umum.
Pendek cerita, web server ni pintu rumah dan laluan masuk rumah, web hosting ni pula adalah ruang dalam rumah kita macam ruang tamu ke, bilik ke, tandas ke dan sebagainya.
Kesimpulannya, jika pintu rumah dan laluan masuk ke dalam rumah tu kecil, maka perlahanlah orang masuk ke dalam rumah kita. Jika besar pintu dan laluan masuk, maka lajulah orang masuk kedalam rumah kita. Kalau terlalu ramai dan padat, semua orang akan stuck di luar rumah dan akhirnya meninggalkan rumah kita kerana terlalu lama beratur nak masuk.
Dah fahamkan?
Web server dan web hosting ni mempunyai spefikasi tertentu sama seperti komputer atau laptop yang anda gunakan dirumah. Ada RAM, ada GPU(Optional), ada CORE(CPU) dan ada STORAGE (HDD, SSD, NVME). Spefikasi web server dan hosting ni adalah sumber (resources) kerana dengan spefikasi-spefikasi ini yang menentukan banyak mana resource yang kita ada.
Visitor & User
Ada beberapa istilah digunakan disini iaitu visitor dan user. Perbezaan visitor dan user adalah visitor hanya melawat web sahaja manakala user menggunakan web. Ini adalah flow penukaran (conversion) daripada visitor ke user:
Visitor -> Masuk Web -> Guna Web?
Jika Tidak -> Keluar Web -> Kekal Sebagai Visitor
Jika Ya -> Guna Web -> Bertukar (Convert) Kepada User
Guna web ni pula bermacam aktiviti seperti membaca, klik posting lain dalam web yang sama, login ke my account ke, register account ke dan sebagainya. Dia sama macam marketing flow, prospects menjadi customers.
Loader.io
Kita akan gunakan loader.io ni untuk test berapa ramai visitor boleh masuk keluar dan masuk buat sesuatu secara serentak (concurrent user). Anda boleh daftar percuma disini.
Lepas daftar, pergi ke menu target hosts dan tekan button new host. Download fail yang dia berikan dan upload kedalam web hosting anda melalui file manager ataupun FTP di folder public_html (cpanel) website yang anda ingin test, kemudian click verify.
Selepas verify pergi ke menu Tests dan tekan button + New Test. Sebelum itu kita kena faham maksud clients ni dulu. Clients ni adalah tools macam browser kita atau aplikasi dekstop yang connect dengan website kita. 1000 clients bermaksud 1000 aplikasi dekstop atau browser yang buka web kita.
User -> Client -> Web Server -> Web Hosting (Applications & Database) -> Website
User Menggunakan Google Chrome (Client) Menjadi Visitor Sebuah Website Melalui Web Server Dahulu Yang Terdapat Didalam Web Hosting
Test Settings
Name adalah nama testing yang anda ingin lakukan. Anda boleh letakkan nama seperti Configuration Website, Server atau Jenis test seperti Get Method dan lain-lain.
Test type pula adalah jenis test yang anda boleh buat. Client per test dan Client per second pada saya test dia lebih kurang sahaja cuma beza dia jika anda letak Client per test 20,000 clients untuk 20 seconds, 1,000 clients akan masuk ke web anda setiap saat sehingga 20 saat. Client per second pula jika anda set 1,000 clients untuk 20 seconds, kiraan dia sama seperti Client per test tadi. Setiap saat 1,000 clients akan masuk ke web anda.
Maintain client load pula adalah test untuk uji concurrent user. Dia akan bermula dari 0 clients hingga ke 10,000 clients secara maksimum sampai habis waktu test yang kita set. Dia macam orang masuk blog kita, dia baca 1 demi 1 artikel, lepas tu sorang lagi masuk, buat perkara yang sama sampailah 10,000 orang masuk dan buat sesuatu di web kita mengikut tempoh masa. Dia adalah connection tak henti-henti seperti produk anda baru launch, orang tak berhenti henti beli. Ala, macam Khairul Aming tu kat Shopee masa dia launching sambal dia tu. Haa macam tu lah.
Clients macam yang diterangkan tadi. Aplikasi dekstop atau browser internet.
Duration pula adalah waktu tempoh test ni berlaku. Maksimum 1 minit sahaja.
Advanced Settings, Error dan Timeout tu adalah rules yang kita set supaya test tu jalan mengikut rules kita tetapkan. Contoh Error tu kita set 50% dan timeout tu 10 second, test ni akan berhenti jika terdapat error 50% dan timeout 10 second. Error dan timeout ni adalah aktiviti yang berlaku di web kita seperti server timeout, error tak dapat akses, dan macam-macam lagi error yang berlaku.
Client Requests inilah adalah part paling penting untuk kita tahu cara yang betul untuk set test yang kita akan lakukan. Misalnya jika anda test landing page anda boleh gunakan Method GET dengan Protocol HTTPS dan host iaitu domain name laman web anda.
Jika anda ingin test add to cart, checkout page dan view cart, anda kena guna Method GET & POST. Bagi user yang boleh login anda kena gunakan kesemua method yang ada.
Apa maksud Method GET & POST ni?
GET ni bermaksud kita request data dalam database web hosting kita. Biasanya GET ini akan diserve oleh cache bagi mereka yang menggunakan plugin cache. Lebih cantik jika guna CDN dan cache semua static files seperti css, js dan lain-lain. Untuk membaca content, melihat gambar, menonton video method GET ini biasa digunakan.
POST pula adalah bermaksud kita mencipta (Create) dan menghantar data ke dalam database web hosting kita. Biasanya POST ini akan menggunakan resource web server. Jika besar resource kita ada maka, cepatlah data tadi dicipta dan dihantar ke dalam database web hosting kita. Bergantung pada software apa dan hardware apa kita guna untuk setup web server kita. User yang ingin membeli akan mengisi data di checkout page kita dan selepas dia tekan button submit atau place order, data tadi dicipta dan dihantar kedalam database kita untuk kita lihat data-data user tu isi tadi.
Ada lagi Method lain seperti PUT, PATCH dan DELETE tapi buat masa ni kita akan gunakan 2 method ini sahaja dulu kerana 2 method ini biasa digunakan dalam sebuah laman web. PUT, PATCH dan DELETE lebih kepada kerja-kerja backend seperti Dashboard admin, panel dan sebagainya. Jika website anda mempunyai features seperti social media, anda perlu gunakan kesemua method ini bergantung pada setiap fungsi pada page anda.
Contoh, posting ini mempunyai ruang komen dibawah. Ruang komen dibawah menggunakan function POST untuk create dan hantar kedalam database. Kemudian untuk memaparkan (display) komen tersebut, ia menggunakan function GET. Jika user ingin edit komen, function yang digunakan adalah PUT atau PATCH dan jika user tersebut ingin delete komennya, function DELETE lah digunakan.
Sekarang bayangkan jika anda mempunyai page newsfeed Facebook dimana setiap saat user akan create dan send data baru ke dalam database? Itu belum lagi ada user yang selalu edit atau delete postingnya?
Page-page beginilah kita akan guna untuk test PUT, PATCH & DELETE. Ok jom kita lihat case study dibawah untuk load test posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail.
Spefikasi Web Server Hosting Xhanxeli.com
Website xhanxeli.com menggunakan spefikasi dibawah:
- 2 vCPU Processing
- 8GB RAM Memory
- 160GB SSD Storage
- 5TB Bandwidth Transfer
- OpenLiteSpeed
- CyberPanel
- Postfix
- WordPress
- 18 Active WordPress Plugins
- QUIC CDN
- LiteSpeed Cache
TEST 1 – GET Method 10K User Per Test
Test ini bertujuan untuk dapatkan berapa ramai visitor yang datang sebagai pembaca posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail yang mampu ditampung oleh Web Server Hosting xhanxeli.com untuk setiap saat.
Test Settings yang digunakan adalah Client Per Test, 10,000 Clients, 1 Min, Method GET, Protocol HTTPS dan link ke posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail.
Seperti yang anda lihat, xhanxeli.com mampu menampung 10,000 clients dengan average response time yang sangat rendah iaitu 27ms sahaja dengan 0% error dan ZERO timeout. Anda boleh lihat simulation test ini disini.
Malah mungkin lebih lagi kerana xhanxeli.com menggunakan CDN dan juga cache untuk serve content posting ini kepada pembaca. Kesimpulannya, xhanxeli.com mampu menampung lebih 1.6k clients setiap saat sehingga 10k clients dalam seminit.
Akan tetapi untuk test ke-2 ini pula, lain keputusannya…
TEST 2 – GET Method 10K Concurrent User
Test ini bertujuan untuk dapatkan berapa ramai visitor yang datang sebagai pembaca dengan aktiviti mereka melihat atau klik secara serentak posting posting yang lain yang bermula dari posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail. Maksudnya, setiap pembaca yang masuk posting ni, dia tekan masuk posting lain sampai maksimum 10,000 clients dan selama 1 minit di xhanxeli.com.
Anda boleh lihat average response time yang sangat lambat iaitu 2303ms atau 2.3 saat, dan mempunyai 38% error serta 20k timeout. Ini bermakna hanya 62% daripada jumlah pembaca yang berjaya membaca posting posting di xhanxeli.com dengan tempoh masa purata 2.3 saat response time.
Response time ni ialah jumlah masa yang diambil untuk respon request dari clients seperti memuatkan (loading) content posting sepenuhnya. Lihat simulation test ini disini.
TEST 3 – GET/POST Method 1K User Per Test
Bayangkan salah satu posting di blog anda VIRAL dan setiap saat ada pembaca yang komen? Ya inilah fungsi test ini. Kali ini jumlah clients adalah 1000 sahaja kerana ini adalah test yang sangat berat dan settingnya adalah random.
Anda boleh lihat 45% error, 820 timeout dan lebih 10k ms atau 10 saat diambil untuk loading dan komen posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail
Ya, hanya 55% clients sahaja yang berjaya loading dan komen posting ini sepenuhnya itupun mengambil masa lebih 10 saat. Kalau saya memang tak tunggu dah nak komen, terus blah macam tu je. Anda boleh lihat simulation test ini disini.
Fakta, 40% pelawat web akan beredar dari sebuah laman web itu jika web itu loading lebih 3saat. Baca How Amazon Would Lose $1.6 Billion If Their Website Slowed Down. Itulah pentingnya pemilihan web server dan kelajuan website. Nak website laju? Gunalah perkhidmatan kami iaitu Speed Optimzation Service.
TEST 4 – GET/POST Method 100 Concurrent User
Kali ini saya turunkan lagi ke 100 clients sahaja kerana saya ini adalah test yang sangat-sangat berat dan saya pasti akan cecah 50% error dengan cepat jika nombor clients lebih besar. Testing kali ini saya ubah rules 50% error ke 80% error.
Lihatlah 100 clients sahaja, 56% error, 107 timeout dan lebih 11k ms atau 11 saat untuk loading dan lakukan aktiviti lain seperti komen posting Cara Buat Web Hosting CyberPanel/LiteSpeed di AWS LightSail.
Kesimpulannya 56% daripada 100 clients akan gagal loading posting ini dan menghantar komen secara serentak. Bayangkan ada 100 pembaca sedang melayari website anda sekarang dan ingin menghantar komen secara serentak atau bayangkan ada 100 pembeli yang ingin membuat pembelian secara serentak seperti Sambal Viral Khairul Aming tu? Lihat simulation testing ini disini.
Ya web server hosting xhanxeli.com ini tidak mampu menampung lebih dari 40 pembaca yang komen secara serentak tetapi mampu tampung maksima 500 lebih pembaca yang komen setiap saat dalam 1 minit, 6000 lebih pembaca yang melakukan aktiviti seperti membaca posting-posting lain di dalam xhanxeli dalam 1 minit dan lebih 10,000 pembaca setiap saat dalam 1 minit.
Kesimpulan
Fuh berpeluhkan baca posting ni? Ya saya pun nak tulis berpeluh. Susah juga nak terangkan dalam bahasa melayu sebenarnya jika bercerita tentang stress test atau load test ni.
Akhir sekali, anda kena ambil tahu spefikasi web server hosting anda untuk melakukan test ini dan beberapa test settings yang lebih spesifik untuk dapatkan data stress/load test yang lebih tepat. Setting yang saya kongsikan adalah secara random sahaja kerana ianya tidak spesifik kerana URL yang saya testing adalah posting yang mempunyai cache dan static filenya diserve oleh QUIC CDN.
Jika anda membina aplikasi atau web yang bermacam fungsi, anda memerlukan settings seperti Headers, Parameters & Body dan Response Variables kerana setting ini lebih spesifik mengikut setiap fungsi page yang anda test. Apa-apa pun tengok pada KPI yang kita ingin capai.
Jika anda sasarkan 1000 pendaftaran serentak, anda boleh buat load test concurrent user di registration page. Jika anda sasarkan 1000 pembelian serentak, anda boleh buat load test concurrent user pada checkout page.
Share this content:
1 comment