[html5radio radiolink=”http://blog.dijaminmurah.com:8000″ radiotype=”shoutcast” bcolor=”000000″ image=”shoutcast-icecast-html5-player-player.jpg” title=”Dijaminmurah.com Radio” artist=”International Top 40″]
Jika anda menggunakan VPS tentu pernah mengalami load yang cukup tinggi. Sebenarnya ada apa dibalik load tersebut dan bagaimana cara menanggulanginya?
Ada banyak sebab kenapa server sampai load tinggi, pertama kualitas dari code yang digunakan rendah, tidak ada pengaturan variable dan assignment yang terlalu besar, ada juga mslaah dari sisi server dimana software tidak dituning dengan baik sesuai dengan kebutuhan, tapi masalah umum ada pada code pemrograman, banyak user yang merasa, di localhost komputer mereka jalan dengan baik, tetapi begitu dipindah ke vps menjadi lambat.
Mari kita ambil contoh sederhana dari masalah ini, wordpress. By default wordpress sebenarnya cukup ringan, yang membuat jadi tambah berat adalah plugin yang digunakan. masalahnya adalah tidak setiap orang tahu bagaimana memprogram yang baik atau bahkan memperbaiki progeam yang jelek jadi baik, solusi yang cukup masuk akal adalah dengan melihat track record dari plugin yang digunakan, bagaimana history tentang kestabilannya, keamanannya? setelah itu dilakukan hitung juga traffic yang masuk, dan tuning php serta web server untuk kebutuhan tersebut.
Jika semua sudah dilakukan langakh terakhir adalah melakukan tune-up dari parameter tersebut. Kita misalkan sebuah situs wordpress dengan kunjungan 2000 unique visit perhari, maka:
- tentukan proses php yang diperlukan, anda bisa cek via perintah top, misal kita tentukan nilainya 100
- rata-rata request time untuk php, bisa di lihat via top
jika 100 php request dengan rata-rata waktu 0.1 detik maka: 100 PHP requests/sec * 0.1sec/PHP request = 10 PHP proses
memiliki banyak proses php juga berbahaya, memory akan cepat habis dan proses akan dialihkan ke swap memory yang performanya jelek, maka dari itu kita perlu mengetahui seberapa banyak proses php yang akan terjadi, jika anda menggunakan php-fastcgi dengan konfigurasi:
- max-procs = 10
- FCGI-CHILDREN = 5
- FCGI-MAX-REQUEST = 1000
maka nilainya bisa dihitung dengan rumus: num-procs = max-procs * ( 1 + PHP_FCGI_CHILDREN ) dan didapat nilai: 60
Nilai tersebut sekilas cukup kecil, tapi itu baru jumlah proses saja, belum dikalikan berapa MB per proses php yang ada, rata-rata proses PHP dengan menggunakan Cache seperti APC/XCACHE/E_ACCELERATOR membutuhkan 13MB:
$ ps axu | grep php 400 web 16 0 152m 13m 6804 S 1 0.7 0:01.99 php-fcgi
jadi total memory yang dibutuhkan untuk menangani 60 proses php adalah: 60 * 13 = 780MB!
Karenanya, gunakanlah plugin atau tambahan dari pihak ketiga yang benar-beanr sesuai dengan kebutuhan anda, bila tidak resiko kehabisan memory akan sering anda alami. mengeset nilai proses php pada nilai yang wajar tentu perlu, namun kita juga tidak bisa memastikan seberapa besar traffic yang masuk, jika anda berani, opsi untuk traffic shaping dari sisi web server bisa jadi alternatif, anda bisa melimit koneksi masuk sehingga tidak membebani vps sendiri. Ada banyak tools untuk itu salah satunya adalah mod_bandwidth untuk apache. Jika anda menggunakan Lighttpd atau Cherokee, fasilitas ini sudah secara default disertakan tanpa perlu menginstall module tambahan. Pastikan pula module GZIP dan deflate sudah dikenali oleh web server anda!
Selamat mencoba!