Uji Performa WordPress Nginx FastCGI Cache

Artikel ini akan membahas secara singkat performa hasil tes benchmark VPS dengan setup Nginx (LEMP) dan FastCGI Cache. Seberapa responsif dan seberapa kuat setingan ini menghandle client request.

Kali ini saya hanya menampilkan data tanpa membandingkan dengan setingan lainnya.

Spesifikasi Server

Server yang saya gunakan kali ini memiliki spesifikasi teknis sebagai berikut:

  • Processor : AMD Ryzen 9 3900X 12-Core Processor
  • CPU cores : 1 @ 3792.870 MHz (hanya 1 core)
  • AES-NI : ✔ Enabled
  • VM-x/AMD-V : ✔ Enabled
  • RAM : 478.0 MiB
  • Swap : 512.0 MiB
  • Disk : 14.2 GiB

Berdasarkan spek yang disediakan oleh provider, server ini memiliki 1 Core AMD Ryzen CPU, 512MB RAM, dan 15GB SSD. VPS ini berlokasi di Los Angeles (US) dengan harga sewa $26.89/tahun di Racknerd.

Setingan Server

VPS ini menggunakan:

  • Nginx v1.18.0
  • Mariadb v10.5.8
  • PHP 7.4.14 FPM
  • Ubuntu 20.04

Setingan WordPress

Untuk WordPress sendiri tidak ada setingan atau optimasi yang aneh. Hanya standar install saja menggunakan:

  • WordPress v5.6.1 (latest version saat artikel ini dibuat)
  • Plugin Cache: Nginx Helper v2.2.2 berfungsi untuk purge/hapus cache
  • Total plugin aktif 5 buah: Nginx helper, Tagdiv Cloud Library, Tagdiv Composer, Tagdiv Social Counter, Tagdiv Standard Pack.
  • Theme: Tagdiv Newspaper X v10.3.91
  • Total jumlah artikel: 127 post

Website untuk uji coba ini menggunakan demo content dari theme Newspaper X dengan tampilan default seperti ini – klik gambar untuk memperbesar:

Web wordpress ini belum dioptimasi dengan CDN ataupun plugin untuk minify kode html, css, dan js nya seperti Autoptimizer.

Uji Benchmark

Tes benchmark performa ini menggunakan Loader.io yang gratisan.

Untuk memastikan bahwa web dilayani dari Nginx FCGI cache, saya buka dulu web nya dan lihat response code nya:

Next, saya gunakan beberapa setingan benchmark yang tersedia. Saya mulai dari angka yang agak tinggi kemudian turunkan ke level yang mungkin masih bisa ditangani oleh server nginx ini.

Secara singkat berikut hasilnya:

500 Clients Over 1 Minute

Singkatnya, tes ini mengirim 500 client dalam 1 menit. Artinya jumlah client/trafik akan dibagi tiap detik nya untuk mengakses web tersebut dengan total 500 client dalam 1 menit.

Berikut hasilnya:

Respon paling cepat yang diberikan oleh server adalah 77,33 ms (milisecond atau mili-detik) atau 0,007 detik, sedangkan paling lama adalah 709,33 ms.

Sedangkan rata-rata total dari tes ini adalah 93,33 ms. Angka ini menunjukkan bagimana Nginx dengan FCGI Cache sangat handal menangani trafik dari 500 klien per menit.

Berapa per hari total yang bisa ditangani? Jika diasumsikan 500 klien tersebut mengakses website selama 1 menit, maka kalikan saja dengan 24 jam x 60 menit x 500 yakni 720.000 klien dalam sehari.

Pada grafik di atas diketahui bahwa walaupun saat ada lonjakan trafik (traffic spike), performa Nginx tetap stabil (garis biru) dengan tingkat kecepatan respon di angka 83 ms. Bagaimana, keren kan?

2000 Clients Over 1 Minute

Karena di angka 500 clients per menit performa server yang diperkuat Nginx ini masih anteng, saya coba naikkan 4x lipat menjadi 2000 clients per menit. Hasilnya:

Bisa dilihat ada kenaikan waktu respon yang sangat kecil. Rata-rata minimal hanya 78 ms, maksimal yang pernah terjadi (biasanya di awal) 1315,67 ms, dan total rata-rata nya hanya 121,33 ms (hanya naik sekitar 30 ms dibanding tes sebelumnya).

Ajaibnya, penggunaan system resource nya juga irit sekitar 10% CPU load. Artinya setingan VPS ini ringan banget dan ramah terhadap resource usage.

Dari gambar di atas terlihat loader.io tidak merata dalam mengirimkan traffic ke website. Sesekali ada spike/peningkatan traffic dan sesekali turun (garis hijau).

Tapi lagi, Nginx masih dapat menangani dengan stabil tanpa kedip sedikitpun.

Pada kotak Response Counts, terlihat 2000 clients semuanya sukses mengakses tanpa ada satupun error, baik itu error 500 (server error), timeout (koneksi terputus), ataupun network error (error jaringan).

5000 Clients Over 1 Minute

Sekarang saya push langsung ke angka 5000 clients per menit. Dan inilah hasilnya

Waktu respon tercepat rata-rata 78,67 ms, terlama 1888,67 ms, dan total rata-ratanya adalah 143 ms. Angka ini masih tergolong cepat loh. Yuk kita lihat grafisnya:

Bagimana? Masih stabil bukan?

Bahkan penggunaan sumberdaya server pun hanya sepertiga (30%) dari total 1 CPU.

Berapa Traffic Maksimal?

Berdasarkan tes sebelumnya, bahkan di angka 5000 clients per menit pun vps dengan Nginx webserver ini masih stabil, ringan, dan powerful dan lebih dari mampu untuk menanganinya.

Lalu pertayaannya, sebarapa jauh yang bisa ditangani server ini?

Saya coba lagi di angka 6000 clients dan 7500 clients per menit. Hasilnya:

Pada 6000 clients per menit, rata-rata waktu respon nya masih bagus di angka 157 ms. Pada skenario ini traffic didistribusikan antara 90-120 clients/detik.

Walaupun performanya tidak se-stabil saat 5000 clients/menit atau di bawahnya (lihat garis biru). Rata-rata garis biru masih di bawah 200 ms yang menunjukkan bahwa server masih responsif.

Yuk kita naikkan sedikit ke 7500 clients/menit.

Dengan uji coba 7500 clients/menit, trafik didistribusikan antara 220-250 clients/detik.

Grafis menunjukan bahwa kecepatan waktu respon tidak lagi stabil datar seperti sebelumnya api mengikuti jumlah clients (garis biru mirip garis hijau).

Waktu respon tercepat 196 ms dan terlama 4081 ms dengan rata-rata kecepatan respon 1008 ms.

Pada tingkatan ini, VPS masih bisa diakses, tidak down, tidak ada error baik server error 500, timeout, ataupun network error.

Artinya walaupun mendapatkan traffik di level tersebut web server tidak akan down ataupun error. Tapi mengalami penurunan kecepatan respon (jadi melambat).

Sebuah studi dari RackAID, waktu respon di atas 500 ms akan menurunkan kualitas user experience (pengalaman pengunjung) yang tidak suka dan cenderung meninggalkan website dengan waktu respon yang lambat.

Jadi, kalau bisa tetap jaga waktu respon server di bawah 500 ms.

Ya meskipun pada realitanya menunggu 1000 ms (1 detik) tidak akan terasa signifikan bagi pengunjung.

Kecepatan Loading Halaman

Page load speed atau seberapa cepat halaman website ditampilkan oleh browser pengguna.

Tool yang umum digunakan adalah GTMetrix. Hasilnya, halaman depan web uji coba yang menggunakan theme Newspaper X dari tagdiv berhasil dirender selama 2,2 detik meskipun total ukuran halaman web beserta asetnya sebesar 1,47MB.

Perlu diingat bahwa kecepatan loading halaman web tidak hanya dipengaruhi oleh performa setingan server tapi juga oleh theme yang digunakan dan banyaknya file aset yang diload.

Kesimpulan

Artikel ini tidak membandingkan performa WordPress pada setup web server Nginx + FCGI Cache dengan mekanisme caching yang lain.

Uji benchmark ini bersifat stress-testting untuk melihat sejauh mana sebuah VPS dengan spesifikasi tertentu dengan Nginx+ FCGI Cache dapat melaju melayani permintaan trafik pengunjung.

Secara umum, sebuah VPS dengan akses ke 1 core CPU, 512MB RAM, dan 15GB SSD apabila menggunakan LEMP stack (Nginx) dan FastCG Cache dan melayani web WordPress sampai 5000 clients/menit dengan lancar atau 7500 clients/menit dengan sedikit lambat (tetap tanpa error).

Artinya berapa visitors per hari? Berdasarkan analisa menggunakan pendekatan perhitungan mudah, maka 5000 clients/menit x 60 menit x 24 jam hasilnya 7,2 juta client/hari.

Apabila menggunakan theme yang sama, Newspaper X versi yang sama, theme ini memerlukan sekitar 47 request (untuk mem-fetch html, js, css, gambar-gambar, dan font).

Oke, anggap saja pembulatan ke atas jadi 50 requests yang diperlukan untuk 1 pengunjung untuk mengakses 1 halaman WordPress website tes uji benchmark ini.

Maka, 7,2 juta client request per hari dibagi 50 request, hasilnya 144.000 visitor per hari atau sekitar 4,3 juta visitor per bulan.

Baca juga: Uji Performa WordPress pada webserver Nginx dan Redis Cache.

Leave a Reply

Your email address will not be published. Required fields are marked *