Pada web server Apache besarnya RAM sangatlah menentukan perfoma website kita, jadi semakin besar RAM maka website kita jadi bisa semakin banyak menerima pengunjung yang datang secara bersamaan.
Permasalahan yang sering muncul adalah server kekurangan memory yang mengakibatkan Apache harus menggunakan swap memory (disk) yang berakibat loading website kita menjadi sangat lambat.
Maka yang perlu kita lakukan adalah mencari batas max clients yang ideal, agar server tidak overload.
Misal ada 200 orang yang masuk secara bersamaan padahal daya tampungnya hanya 100 tapi karena kita salah dalam menentukan server limit dan max clients pada httpd.conf maka ke 200 orang tersebut tetap masuk secara bersamaan dan bukannya mengantri per 100 orang.
Secara default Apache mempunyai konfigurasi sbb:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
Yang berarti mendeklarasikan kalau daya tampungnya adalah 256.
Pengumpulan data Resource Server
- Berapa RAM Anda?
Jumlah RAM yang kita miliki saat membeli server - Berapa RAM yang Dialokasikan Untuk OS?
Jumlah Rata-rata RAM yang httpd gunakan, bisa mengeksekusi perintah berikut:ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
- Berapa RAM yang Dialokasikan Untuk MySQL?
Untuk mengetahui RAM yang dialokasikan untuk MySQL, cara terbaik dengan menggunakan script mysqltunner.pl.
Download & Install mysqltuner.pl
Login ke server via SSH.
Download mysqltuner.plcd /usr/local/bin
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
Lalu jalankan mysqltuner.pl/usr/local/bin/mysqltuner.pl
- Berapa Rata-Rata Proses Apache?
ps -ylC httpd | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB): "x/1024; print "Average Proccess Size (MB): "x/((y-1)*1024)}'
Hasil yang kita dapatkan:
Jumlah RAM = 125,7G (125700 MB).
Alokasi RAM untuk MySQL = 40,9G (40900 MB).
Alokasi RAM untuk OS = 59,5921 MB.
Rata-rata proses Apache = 69,2
Rumus untuk menghitung Max clients adalah:
Max Clients = Jumlah RAM server – (Alokasi RAM ke MySQL + Alokasi RAM ke OS) / Rata-rata proses Apache
Max clients = 125700 – (40900+ 59,5921)/69,2
Max clients = (125700 – 40959,5921)/69,2
Max clients = 84740,4079/69,2
Max clients = 1224,572368 Dibulatkan menjadi 1225.
Nah kemampuan server kita adalah 1225 orang saja, jadi misal ada 1300 orang yang masuk secara bersamaan yang 75 orang antri terlebih dahulu.