Meningkatkan Performa pada PHP-FPM

Secara default PHP-FPM terdapat konfigurasi pool default yang dapat Anda cek pada file www.conf. Namun pada kondisi tertentu Anda perlu meningkatkan beberapa options seperti Max Children, Max Requests dan lainya menyesuaikan ketersediaan resource server.

Max Children

pm.max_children adalah jumlah maksimum proses PHP-FPM yang dapat berjalan secara simultan. Untuk menghitung nilai yang sesuai untuk konfigurasi ini, Anda perlu mempertimbangkan beberapa faktor seperti jumlah CPU, memori, dan lalu lintas server Anda

Anda bisa menggunakan rumus sederhana seperti

pm.max_children = (Total RAM - RAM yang dibutuhkan oleh sistem, database, dan layanan lain) / (RAM yang dibutuhkan oleh satu proses PHP-FPM)

Untuk mencari tahu rata-rata penggunaan memori oleh satu proses PHP-FPM

ps -ylC php-fpm --sort:rss | awk '{sum+=$8; ++n} END {print "Average Memory Usage = "sum/n/1024" MB"}'

Setelah mengetahui rata-rata penggunaan memori pada satu proses PHP-FPM, Anda dapat mulai menghitungnya sesuai rumus diatas.

Max Requests

pm.max_requests pada PHP-FPM adalah jumlah maksimum permintaan yang dapat dilayani oleh satu proses PHP-FPM sebelum proses tersebut dihentikan dan digantikan oleh proses baru.

Beberapa sumber merekomendasikan nilai antara 100-1000, tetapi nilai yang tepat tergantung pada kebutuhan spesifik server dan aplikasi Anda

Jika jumlah memori yang tersedia pada server masih cukup banyak, Anda dapat mencoba rumus ini sembari memonitor agar memori tidak terkuras banyak oleh proses PHP-FPM.

pm.max_requests = (Total pm.max_children x 10)

Process Idle Timeout

pm.process_idle_timeout bertugas untuk mematikan proses PHP-FPM yang tidak aktif selama jangka waktu tertentu, sehingga mengurangi penggunaan memori oleh proses yang tidak aktif dan meningkatkan ketersediaan proses untuk permintaan baru.

Pada opsi ini disarankan nilai 10-100 dan dapat ditingkatkan lagi sesuai kebutuhan aplikasi Anda.