Mengatasi WARNING: [pool www] server reached pm.max_children setting di Php-fpm

Mengatasi WARNING server reached pm.max_children setting di Php-fpm-arifrahman.net
Mengatasi WARNING server reached pm.max_children setting di Php-fpm-arifrahman.net

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 

Leave a Reply

Your email address will not be published. Required fields are marked *