Uji Performa WordPress Nginx Redis Page Cache

Artikel ini akan membahas secara singkat bagaimana performa VPS dengan setup Nginx (LEMP) dan Redis sebagai page cache. Seberapa responsif dan seberapa kuat setingan ini menghandle client request?

Saya akan gunakan hasil uji benchmark pakai Loader.io untuk menjawab pertanyaan tersebut.

Namun, pada artikel 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.

spesifikasi vps untuk benchmark

Setingan Server

VPS ini menggunakan:

  • Ubuntu 20.04
  • Nginx v1.18.0
  • Mariadb v10.5.8
  • PHP 7.4.14 FPM
  • Redis Cache v6.0.6

Setingan WordPress

Untuk WordPressnya 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:
newspaper x theme

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

Uji Benchmark

Tes uji performa ini menggunakan layanan Loader.io yang paket gratisan.

Karena beberapa kali uji response header seringkali Redis Cache mengalami MISS saat menggunakan plugin Nginx Helper untuk Redis, maka saya juga gunakan plugin Redis Object Cache.

Selanjutnya, saya gunakan beberapa setingan benchmark yang tersedia di Loader.io. Saya mulai dari angka yang rendah kemudian naikkan sedikit-sedikit ke level yang mungkin masih bisa ditangani oleh server nginx dan Redis ini.

Secara singkat berikut hasilnya:

Menggunakan Plugin Nginx Helper

Nginx Helper punya 2 (dua) fungsi caching yang bisa di pilih: untuk (1) Nginx FastCGI Caching, dan (2) Redis Page Cache – yang menggunakan module srcache.

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:

Tentu, dengan hanya 500 clients dalam 1 menit webserver server LEMP yang diperkuat dengan Redis tidak akan kesulitan menanganinya.

Respon paling cepat yang diberikan oleh server adalah 79,00 ms (milisecond atau mili-detik) atau 0,079 detik, sedangkan paling lama adalah 756,00 ms.

Sedangkan rata-rata total dari tes ini adalah 97,33 ms. Angka ini menunjukkan bagimana Nginx dengan Redis 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 91 ms.

2000 Clients Over 1 Minute

Sama seperti sebelumnya, karena di angka 500 clients per menit performa server yang diperkuat Nginx dan Redis 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 81,33 ms, maksimal yang pernah terjadi (biasanya di awal) 1396,33 ms, dan total rata-rata nya hanya 124,67 ms.

Jika diamati dari gambar di bawah ini, terlihat loader.io tidak merata dalam mengirimkan traffic ke website. Sesekali ada spike/peningkatan traffic dan sesekali turun (garis hijau).

Tapi lagi, Nginx dan Redis Cache 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,00 ms, terlama 1777,33 ms, dan total rata-ratanya adalah 148,33 ms. Angka ini masih tergolong cepat loh. Yuk kita lihat grafisnya:

Bahkan pada uji coba 5000 clients/menit pun server ini masih memberikan response yang stabi (lihat garis biru)

Menggunakan Plugin Redis Object Cache

Test gelombang kedua masih menggunakan server dan setingan yang sama, hal yang membedakan hanya pada plugin yang digunakan supaya WordPress bisa terintegrasi dengan Redis Cache yang sudah terinstall di server.

500 Clients Over 1 Minute

Kita langsung lihat hasilnya saja ya:

Terlihat masih sama antengnya kan? Mudah dan ringan buat Nginx dan Redis melayani traffic sekecil ini.

Dari gambar pun terlihat sangat stabil yang ditunjukkan dengan garis biru. Walaupun traffik jumlahnya naik, garis biru nya gak ikut naik.

2000 Clients Over 1 Minute

Saya langsung yakin bahwa di angka ini server yang diujicoba kan ini bakalan tetap tenang dan stabil.

Naik sedikit sih angkanya, tapi dari rata-rata 100.33 ke 122.00 yakni naik 22 milisecond tentunya sangat tidak signifikan.

Terlebih, walaupun traffic nya naaik turun, sang server tetap memberikan respons yang sangat stabil – cek garis biru.

5000 Clients Over 1 Minute

Saya coba push lagi ke angka 5000 clients per menit. Berikut angkanya dari 3 kali test

Waktu respon tercepat rata-rata 78,67 ms, terlama 1900,33 ms, dan total rata-ratanya adalah 137,33 ms.

Masih kenceng kan? Yuk kita lihat grafisnya apakah masih stabil?

Masih cukup stabil ternyata gaes, hanya sedikit goyang saat ada spike/loncakan sedikit.

Berapa Traffic Maksimal?

Berdasarkan tes sebelumnya, bahkan di angka 5000 clients per menit pun vps dengan Nginx webserver dan Redis Cache 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 5500, 6000, dan 7500 clients per menit. Hasilnya:

Plugin Nginx Helper

5500 clients over 1 minute

6000 clients over 1 minute

7000 clients over 1 minute

Plugin Redis Cache

5500 clients over 1 minute

6000 clients over 1 minute

7000 clients over 1 minute

Secara singkat, pada angka 5500 client, baik menggunakan plugin Nginx Helper ataupun Redis Object Cache keduanya menghasilkan performa yang mirip yaitu masih cepat dan ringan.

Begitu pula pada angka 6000 client. Rata-rata waktu response keduanya masih di bawah 200 milisecond.

Tetapi, naik sedikit lagi di angka 7000 clients, keduanya mengalami kenaikan waktu respon rata-rata di atas 500 ms, yaitu 836 ms dan 772 ms.

Pada kecepatan tersebut tentu tidak akan dirasakan secara signifikan oleh pengunjung, tetapi berdasarkan sebuah penelitian, angka di atas 400ms akan mengurangi kualitas kepuasan 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 saat menggunakan plugin Redis Object Cache, meskipun total ukuran halaman web beserta asetnya sebesar 1,39MB.

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.

Menggunakan plugin Nginx Helper

Menggunakan plugin Redis Object Cache

Kesimpulan

Secara umum, web server yang diperkuat Nginx dan Redis Cache dapat melayani sampai dengan 6000 clients request per menit.

Performa waktu respon nya pun sangat stabil.

Baik yang menggunakan plugin Nginx Helper ataupun plugin Redis Object Cache, selisih di antara keduanya sangat tipis.

Secara pribadi melihat hasil uji benchmark di atas, penggunaan plugin Redis Object Cache sedikit lebih cepat. Hal ini terlihat dari selisih angka pada benchmark Loader.io dan uji di GTMetrix.

Berapa visitor yang mampu dilayani? Yuk hitung sendiri dengan rumus estimasi visitor ini.

Baca juga: Uji performa WordPress pada webserver Nginx dengan FastCGI Cache.

Leave a Reply

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