Persiyapan PHP-FPM: gunakake pm statis kanggo kinerja maksimal

Persiyapan PHP-FPM: gunakake pm statis kanggo kinerja maksimal

Versi artikel iki sing ora diowahi wiwitane diterbitake ing haydenjames.io lan diterbitake ing kene kanthi ijin pengarang.

Aku bakal pitutur marang kowe ing Cekakipun carane paling apik kanggo ngatur PHP-FPM kanggo nambah throughput, nyuda latensi, lan nggunakake CPU lan memori luwih konsisten. Kanthi gawan, baris PM (manajer proses) ing PHP-FPM yaiku dinamis, lan yen sampeyan ora duwe memori cukup, iku luwih apik kanggo nginstal ondemand. Ayo mbandhingake 2 opsi kontrol adhedhasar dokumentasi php.net lan ndeleng carane favoritku bedo saka wong-wong mau Statis pm kanggo lalu lintas volume dhuwur:

pm = dinamis - jumlah pangolahan anak dikonfigurasi kanthi dinamis adhedhasar arahan ing ngisor iki: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand - pangolahan digawe ing dikarepake (minangka gantos kanggo nggawe dinamis, nalika pm.start_servers dibukak nalika layanan diwiwiti).
pm = statis - jumlah pangolahan anak tetep lan dituduhake dening parameter pm.maks_anak.

Kanggo rincian, ndeleng dhaptar lengkap arahan global php-fpm.conf.

Persamaan antarane manajer proses PHP-FPM lan pengontrol frekuensi CPU

Iki bisa uga katon offtopic, nanging aku bakal nyambungake iki menyang topik konfigurasi PHP-FPM. Sapa sing durung ngalami kalem prosesor paling ora sapisan - ing laptop, mesin virtual utawa server darmabakti? Elingi skala frekuensi CPU? Pilihan iki kasedhiya kanggo nix lan Windows bisa nambah kinerja sistem lan responsif kanthi ngganti setelan throttle prosesor saka ondemand ing kinerja*. Wektu iki, ayo mbandhingake deskripsi lan deleng persamaan:

gubernur = ondhemand - skala dinamis frekuensi prosesor gumantung saka beban saiki. Mlumpat kanthi cepet menyang frekuensi maksimum lan banjur suda minangka wektu ora aktif mundhak.
gubernur=konservatif= skala frekuensi dinamis gumantung saka beban saiki. Nambah lan nyuda frekuensi luwih lancar tinimbang ondemand.
Gubernur = kinerja - frekuensi tansah maksimum.

Kanggo rincian, ndeleng dhaftar lengkap paramèter pengatur frekuensi prosesor.

Ndeleng podho? Aku wanted kanggo nuduhake comparison iki kanggo gawe uwong yakin sing paling apik kanggo nggunakake pm statis kanggo PHP-FPM.

Kanggo parameter regulator prosesor kinerja mbantu kanggo aman nambah kinerja amarga iku meh tanggung gumantung ing watesan CPU server. Saliyane iki, mesthi ana uga faktor kayata suhu, pangisian daya baterei (ing laptop) lan efek sisih liyane saka terus-terusan mbukak prosesor ing 100%. Setelan kinerja njamin kinerja prosesor paling cepet. Maca, contone, babagan force_turbo parameter ing Raspberry Pi, karo panel RPi bakal nggunakake regulator kinerja, ngendi dandan kinerja bakal luwih katon amarga kacepetan jam CPU kurang.

Nggunakake pm statis kanggo entuk kinerja server maksimal

Pilihan PHP-FPM pm statis umumΓ© gumantung ing free memori ing server. Yen memori kurang, luwih becik milih ondemand utawa dinamis. Ing tangan liyane, yen sampeyan duwe memori, sampeyan bisa ngindhari overhead manager proses PHP kanthi nyetel pm Statis kanggo kapasitas server maksimum. Ing tembung liyane, yen kabeh wis diwilang uga, sampeyan kudu netepake pm.statis nganti volume maksimum proses PHP-FPM sing bisa dieksekusi, tanpa nggawe masalah karo memori kurang utawa cache. Nanging ora dhuwur banget sing bisa ngatasi prosesor lan nglumpukake akeh operasi PHP-FPM sing nunggu dieksekusi..

Persiyapan PHP-FPM: gunakake pm statis kanggo kinerja maksimal

Ing gambar ing ndhuwur, server wis pm = statis lan pm.max_children = 100, lan iki njupuk kira-kira 10 GB saka kasedhiya 32. Pay manungsa waΓ© menyang kolom disorot, kabeh cetha kene. Ing gambar iki ana kira-kira 200 pangguna aktif (luwih saka 60 detik) ing Google Analytics. Ing tingkat iki, kira-kira 70% proses anak PHP-FPM isih nganggur. Iki tegese PHP-FPM tansah disetel menyang jumlah maksimum sumber daya server preduli saka lalu lintas saiki. Proses nganggur ngenteni puncak lalu lintas lan langsung nanggapi. Sampeyan ora kudu ngenteni nganti pm bakal nggawe proses anak lan banjur mungkasi nalika periode kadaluwarsa pm.process_idle_timeout. Aku nyetel regane dhuwur banget pm.max_requestsamarga iki minangka server sing bisa digunakake tanpa bocor memori ing PHP. Sampeyan bisa nginstal pm.max_requests = 0 kanthi statis yen sampeyan pancen yakin karo skrip PHP sing ana lan sing bakal teka. Nanging luwih apik kanggo mbukak maneh skrip saka wektu. Setel nomer akeh panjalukan, amarga kita pengin supaya ora perlu biaya pm. Contone, paling pm.max_requests = 1000 - gumantung saka jumlah pm.maks_anak lan jumlah panjalukan saben detik.

Screenshot nuduhake printah Linux ndhuwur, disaring dening u (pangguna) lan jeneng panganggo PHP-FPM. Mung pisanan 50 utawa luwih pangolahan ditampilake (Aku ora Count persis), nanging ateges ndhuwur nuduhake statistik ndhuwur sing pas menyang jendhela terminal. Ing kasus iki diurutake miturut% CPU (%CPU). Kanggo ndeleng kabeh proses 100 PHP-FPM, jalanake printah:

top -bn1 | grep php-fpm

Nalika nggunakake pm ondemand lan dinamis

Yen sampeyan nggunakake pm dinamis, kesalahan kaya iki kedadeyan:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

Coba ngganti parameter, kesalahan ora bakal ilang, kaya diterangake ing kirim iki ing Serverfault. Ing kasus iki, nilai pm.min cilik banget, lan amarga lalu lintas web beda-beda banget lan nduweni puncak dhuwur lan lembah sing jero, angel nyetel pm kanthi cukup. dinamis. Biasane pm digunakake ondemand, kaya sing disaranake ing kiriman sing padha. Nanging iki malah luwih elek, amarga ondemand mungkasi pangolahan nganggur nganti nol nalika lalu lintas sithik utawa ora ana, lan sampeyan isih bakal entuk overhead kanggo ngganti lalu lintas. Kajaba, mesthi, sampeyan nyetel wektu ngenteni ageng. Lan banjur luwih apik kanggo nggunakake pm.statis + nomer dhuwur pm.max_requests.

PM dinamis lan utamane ondemand bisa uga migunani yen sampeyan duwe macem-macem kolam renang PHP-FPM. Contone, sampeyan dadi tuan rumah sawetara akun cPanel utawa sawetara situs web ing macem-macem kolam. Aku duwe server kanthi, ucapake, 100+ akun cpanel lan sekitar 200 domain, lan pm.static utawa malah dinamis ora bakal nylametake aku. Kabeh sing perlu kene ondemand, sawise kabeh, luwih saka rong pertiga situs web nampa lalu lintas sethithik utawa ora ana, lan karo ondemand kabeh pangolahan anak bakal tiba mati, kang bakal nyimpen kita akèh memori! Untunge, pangembang cPanel ngerteni iki lan nyetel nilai kasebut dadi standar ondemand. Sadurunge, nalika standar dinamis, PHP-FPM ora cocok kanggo server bareng sing sibuk. Akeh wis digunakake suPHP, amarga pm dinamis nggunakake memori sanajan karo pools nganggur lan akun cPanel PHP-FPM. Paling kamungkinan, yen lalu lintas apik, sampeyan ora bakal dadi tuan rumah ing server kanthi jumlah kolam renang PHP-FPM (shared hosting).

kesimpulan

Yen sampeyan nggunakake PHP-FPM lan lalu lintas sampeyan abot, manajer proses ondemand ΠΈ dinamis kanggo PHP-FPM bakal diwatesi throughput amarga overhead gawan sing. Ngerti sistem sampeyan lan ngatur pangolahan PHP-FPM miturut kapasitas server maksimal. Set pisanan pm.maks_anak gumantung ing maksimum panggunaan pm dinamis utawa ondemand, lan banjur nambah nilai iki kanggo tingkat ngendi memori lan prosesor bakal bisa tanpa overloaded. Sampeyan bakal sok dong mirsani sing karo pm statis, amarga sampeyan duwe kabeh ing memori, lonjakan lalu lintas bakal nyebabake lonjakan CPU luwih sithik saka wektu, lan rata-rata beban server lan CPU bakal munggah. Ukuran proses PHP-FPM rata-rata gumantung ing server web lan mbutuhake konfigurasi manual, mula manajer proses luwih otomatis dinamis ΠΈ ondemand - luwih populer. Muga-muga artikel kasebut migunani.

DUP Bagan benchmark ditambahake ab. Yen pangolahan PHP-FPM ing memori, mundhak kinerja ing beyo saka konsumsi memori ngendi padha njagong lan ngenteni. Temokake pilihan sing paling apik kanggo sampeyan.

Persiyapan PHP-FPM: gunakake pm statis kanggo kinerja maksimal

Source: www.habr.com

Add a comment