
Jika anda pengguna web server berbasis Nginx dan menggunakan php-fpm sebagai interpreter PHP, barangkali pernah menemukan pesan warning pm.max_children di log, kurang lebih pesannya seperti berikut :
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
Pesan tersebut mengindikasikan bahwa konfigurasi pm.max_children sudah mencapai batasnya, hal tersebut karena beberapa kemungkinan diantaranya :
- Sedang ada banyak pengunjung yang mengakses secara bersamaan
- Issue resource server sehingga mengakibatkan lambatnya proses eksekusi skrip PHP
- Pengaturan max_children terlalu rendah
Konfigurasi pm.max_children yang kurang tempat dapat mengakibatkan website tidak bisa di akses dengan pesan error 502 Bad Gateway atau 503 Service Temporarily Unavailable.
Jadi jika anda menemukan pesan warning diatas, yang perlu dilakukan adalah menyesuaikan value pm.max_children di konfigurasi Php-fpm.
Sebagai contoh saya menggunakan sistem operasi Ubuntu 16.04 LTS, Nginx 1.10.3 dan php-fpm versi 7.0 maka path file untuk mengubah value pm.max_children ada pada :
/etc/php/7.0/fpm/pool.d/www.conf
Defaultnya value pm.max_children adalah 5. Ubahlah sesuai dengan kebutuhan anda
Tips Menentukan Value pm.max_children
Sebenarnya setelah kita naikkan nilainya misal diangka 20 dan pesan warningnya hilang itu sudah cukup tapi bisa jadi nilai tersebut kurang tepat. Lalu berapakah value yang tepat untuk isian pm.max_children? jawabannya adalah sesuai dengan spesifikasi server (RAM) serta resource rata-rata yang dibutuhkan oleh php-fpm
Rumus menetukan value pm.max_children = RAM yang dialokasikan untuk web server / Rata-rata resource php-fpm yang digunakan
Misal :
- Total RAM 2 GB, alokasi RAM untuk web server 1,5 GB (1500MB)
- Rata-rata penggunaan RAM php-fpm adalah 22 MB, cara mengeceknya bisa menggunakan command berikut :
ps –no-headers -o “rss,cmd” -C php-fpm7.0 | awk ‘{ sum+=$1 } END { printf (“%d%s\n”, sum/NR/1024,”M”) }’
Jadi value value pm.max_children yang tepat adalah = 1500MB/22MB
Sekitar : 68
Isikan value pm.max_children di file /etc/php/7.0/fpm/pool.d/www.conf dengan nilai 68
Save kemudian restart services php-fpm :
/etc/init.d/php7.0-fpm restart
Sebagai catatan :
Untuk mentukan nilai pm.max_children yang tepat, perhitungan diatas apabila server memiliki memory dedicated untuk web server. Dengan kata lain apabila server yg digunakan adalah shared hosting atau code PHP yang dipasang kompleks serta membutuhkan resources yang tinggi perhitungan diatas bisa jadi berbeda dan perlu penyesuaian lagi.
Terima kasih, semoga bermanfaat
Referensi : https://gist.github.com/holmberd/44fa5c2555139a1a46e01434d3aaa512