09. Optimalisasi Nginx Web Server dan PHP-FPM
Setting Nginx Worker
untuk setting nginx worker, login ke vps terlebih dahulu dengan ssh public key / password
kemudian edit nginx config dengan perintah sudo nano /etc/nginx/nginx.conf
kita bisa menyesuaikan konfigurasi worker_prosesses auto;
agar menyesuaikan dengan core vps dan worker_connections 1024;
untuk setiap koneksi yang dapat di handle worker process
Setting Max Upload dan Timeout di Nginx VirtualHost
untuk setting max upload dan timeout di nginx, edit virtualhost yang diinginkan dengan perintah berikut :
# sesuaikan nama virtualhost anda
sudo nano /etc/nginx/sites-enabled/idrive.id
kemudian tambahkan configurasi berikut :
# max client uploud
client_max_body_size 128M;
# max client timeout dan proxy timeout
client_body_timeout 360;
proxy_read_timeout 360;
proxy_connect_timeout 360;
proxy_send_timeout 360;
Test konfigurasi nginx dengan perintah sudo nginx -t
dan restart nginx service dengan perintah sudo service nginx restart
Setting Memory Limit, Max Upload dan Timeout di PHP-FPM
untuk setting memory limit, max upload dan timeout di php, edit file php.ini
lokasinya tergantung system operation yang digunakan, misal kita edit dengan lokasi berikut sudo nano /etc/php/7.4/fpm/php.ini
edit file konfigurasi berikut :
# memory limit php process
memory_limit = 128M
# maksimal script parsing request
max_input_time = 360
# maksimal php execution time
max_execution_time = 360
# maksimal upload file
upload_max_filesize = 128M
# maksimal php upload single request
max_file_upload = 20
# maksimal post data php
post_max_size = 128M
Edit & Optimalkan PHP Pool FPM PHP Process Manager
untuk optimalkan php pool pada php-fpm, kita bisa menambahkan atau merubah file di sudo nano /etc/php/7.4/fpm/pool.d/www.conf
kita bisa menyesuaikan sesuai dengan kapasitas ram dan cpu dari vps kita, dengan contoh configurasi berikut :
# maksimal proses turunan php pm
pm.max_children = 10
# default start proses turunan php pm
pm.start_servers = 5
# minimal spare server proses turunan php pm
pm.min_spare_servers = 3
# maksimal spare server proses turunan php pm
pm.max_spare_servers = 5
# php pm idle timeout
pm.process_idle_timeout = 10s;
untuk melakukan pengecekan berapa proses yang jalan dan berapa penggunaan ram per proses dapat jalankan dengan perintah berikut :
# cek proses php-fpm yang jalan
ps -ylC php7.4-fpm --sort:rss
# cek rata-rata penggunaan memory proses php-fpm
ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | grep php-fpm
setelah menyesuaikan perubahan pada pool php di /etc/php/7.4/fpm/pool.d/www.conf
restart php-fpm dan nginx dengan perintah sudo service php7.4-fpm restart
dan lakukan pengecekan kembali jumlah service php process manager dengan perintah sebelumnya