Setelan process manager PHP-FPM

By | July 28, 2019

Pembahasan kali ini dari permintaan mbak Shafira bagi optimasi Process Manager dari PHP-FPM. Ya sekalian saya belajar pun soal mana setelan terbaik tergantung situasi dan spesifikasi servernya. Tak semuanya sama kan. 😀

Fokusnya yaitu Process Manager yang dapat kamu peroleh pada konfigurasi PHP-FPM:

pm = ondemand
pm.max_children = 16
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 12
pm.max_requests = 1000

Saya jelaskan dulu semampu saya. 😀

pm ini dapat diisi 3 jenis:

  1. static – Mesinnya selalu terdapat sesuai jumlah yang telah ditentukan. Tak perlu dibuka-tutup, jadi semestinya yang sangat cepat. Namun pemakaian memorinya akan berjalan terus dan kadang perlu direstart manual (atau terjadwal dengan cron) bagi mengurangi memori terpakai. Tak pernah dilepas soalnya. Namun yang sangat bagus performanya.
  2. dynamic – Mesin (child process) akan diciptakan secara dinamis merujuk pada pm.start_servers, pm.min_spare_servers dan pm.max_spare_servers. Jadi selalu ada minimalnya yang akan selalu aktif. Kalau CPU servernya bagus boleh gunakan ini.
  3. ondemand – Ini yaitu yang sangat seimbang performa dengan pemakaian memorinya. Jadi proses anakannya hanya diciptakan ketika diperlukan, agak mirip dengan dynamic tapi ini benar – benar dari 1 master process saja. Dan parameter yang berpengaruh yaitu pm.max_children, pm.process_idle_timeout, dan pm.max_requests. Dalam rentang waktu tak terpakai akan dimatikan, jadi ini yang sangat hemat memori diantara semuanya.

Satu lagi kalau pm.max_requests ini tercapai angkanya karenanya akan direspawn prosesnya. Misal diisi 1000 berarti akan melayani 1000 permintaan per detik dan apabila lebih dari itu akan direspawn dan dari 0 lagi. Ingat 1000 request per detik ya, bukan 1000 pengunjung per detik, satu pengunjung dapat beberapa request sekaligus. Kalau kamu setel terlalu rendah akan sering direspawn dan membangun proses requestnya tersendat, jangan terlalu tinggi pun karena dapat meledak konsumsi memorinya karena terlalu lama dipegang.

Referensi yang dapat menolong:

  1. PHP-FPM Configuration: http://php.net/manual/en/install.fpm.configuration.php
  2. PHP-FPM www.conf: https://gist.github.com/evansolomon/2273968


Sumber https://servernesia.com