Load Testing NGINX dengan ApacheBench dan wrk
Halo, teman-teman! Kali ini kita bakal ngomongin tentang load testing NGINX pake dua tools keren: ApacheBench (ab) dan wrk. Buat yang belum tau, load testing itu penting banget buat ngecek seberapa kuat server kita nahan beban kalo lagi rame-rame. NGINX sendiri udah terkenal sebagai web server yang kenceng dan stabil, tapi tetep aja kita perlu ngetesnya biar yakin.
Kenapa Perlu Load Testing?
Sebelum kita mulai, yuk bahas dulu kenapa sih load testing itu penting:
- Ngecek Kinerja: Kita bisa tau seberapa cepat server kita ngehandle request.
- Mencari Bottleneck: Biar tau bagian mana yang perlu dioptimasi.
- Memprediksi Skalabilitas: Biar tau kira-kira server kita bisa nahan berapa banyak user.
- Mencegah Downtime: Biar gak kaget pas lagi rame-rame tiba-tiba server down.
Persiapan Sebelum Load Testing
Sebelum mulai ngetes, pastiin dulu:
- Server NGINX udah jalan dan bisa diakses.
- Tools ApacheBench dan wrk udah terinstall di mesin testing.
- Target URL yang mau dites udah siap (misalnya
http://localhost/
).
Install ApacheBench dan wrk
Buat yang belum punya, install dulu toolsnya:
ApacheBench (ab) biasanya udah include di package Apache. Kalo belum, install pake perintah:
sudo apt-get install apache2-utils # Debian/Ubuntu sudo yum install httpd-tools # CentOS/RHEL
wrk bisa diinstall dari source atau pake package manager. Contoh pake source:
git clone https://github.com/wg/wrk.git cd wrk make sudo cp wrk /usr/local/bin
Load Testing dengan ApacheBench
ApacheBench atau ab
itu tools simpel buat ngetes performa web server. Cara pakenya gampang banget. Misalnya, kita mau ngetes NGINX dengan 1000 request dan 100 concurrent connection:
ab -n 1000 -c 100 http://localhost/
Hasilnya bakal keluar kayak gini:
Server Software: nginx/1.18.0
Server Hostname: localhost
Server Port: 80
Document Path: /
Document Length: 612 bytes
Concurrency Level: 100
Time taken for tests: 0.123 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 830000 bytes
HTML transferred: 612000 bytes
Requests per second: 8130.08 [#/sec] (mean)
Time per request: 12.300 [ms] (mean)
Time per request: 0.123 [ms] (mean, across all concurrent requests)
Transfer rate: 6589.58 [Kbytes/sec] received
Dari sini kita bisa liat:
- Requests per second: 8130.08, artinya server bisa nangani 8130 request per detik.
- Time per request: 12.3 ms, artinya rata-rata waktu yang dibutuhkan buat satu request.
Load Testing dengan wrk
wrk itu tools yang lebih modern dan powerful dibanding ab
. wrk bisa ngehandle lebih banyak concurrent connection dan lebih fleksibel. Contoh pakenya:
wrk -t12 -c400 -d30s http://localhost/
Artinya:
-t12
: pake 12 thread.-c400
: pake 400 concurrent connection.-d30s
: tes selama 30 detik.
Hasilnya bakal keluar kayak gini:
Running 30s test @ http://localhost/
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 20.12ms 15.38ms 199.47ms 86.12%
Req/Sec 1.70k 357.26 2.00k 69.33%
610750 requests in 30.10s, 463.65MB read
Requests/sec: 20290.69
Transfer/sec: 15.40MB
Dari sini kita bisa liat:
- Requests per second: 20290.69, jauh lebih tinggi dibanding
ab
karena pake lebih banyak thread dan connection. - Latency: rata-rata 20.12 ms.
Perbandingan ApacheBench dan wrk
- ApacheBench lebih simpel dan cocok buat tes cepat. Tapi kurang cocok buat simulasi beban tinggi karena cuma pake satu thread.
- wrk lebih powerful karena multithreaded dan bisa ngehandle beban lebih tinggi. Cocok buat tes yang lebih realistis.
Tips Load Testing
- Mulai dari Kecil: Jangan langsung pake beban tinggi, mulai dari yang kecil dulu.
- Monitor Server: Pantau resource server (CPU, memory, network) pas lagi ngetes.
- Ubah Parameter: Coba variasikan jumlah request dan concurrent connection buat liat batas server.
- Tes di Lingkungan yang Sama: Kalo bisa, tes di lingkungan yang mirip production biar hasilnya akurat.
Kesimpulan
Load testing itu penting banget buat mastiin server kita siap nahan beban. Pake tools kayak ApacheBench dan wrk, kita bisa ngecek performa NGINX dengan mudah. Jangan lupa buat selalu monitor dan optimasi server biar makin kenceng!
Nah, itu dia sedikit sharing tentang load testing NGINX. Semoga bermanfaat, ya! Kalo ada pertanyaan atau mau nambahin, komen aja di bawah. Happy testing!