Skip to main content

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

Screenshot 2023-10-31 at 01.35.44.png

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

Screenshot 2023-10-31 at 01.36.35.png

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

Screenshot 2023-10-31 at 01.39.07.png

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;

Screenshot 2023-10-31 at 01.39.34.png

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

Screenshot 2023-10-31 at 01.42.41.png

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 

Screenshot 2023-10-31 at 01.49.15.png

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

Screenshot 2023-10-31 at 01.50.34.png

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

Screenshot 2023-10-31 at 01.52.50.png