Setup PHP-FPM: uża pm static għal prestazzjoni massima

Setup PHP-FPM: uża pm static għal prestazzjoni massima

Verżjoni mhux editjata ta’ dan l-artikolu kienet oriġinarjament ippubblikata fuq haydenjames.io u ppubblikat hawn bil-permess tagħha l-awtur.

Ngħidlek fil-qosor kif l-aħjar tikkonfigura PHP-FPM biex iżżid it-throughput, tnaqqas il-latenza, u tuża CPU u memorja b'mod aktar konsistenti. B'mod awtomatiku, il-linja PM (maniġer tal-proċess) f'PHP-FPM hija dinamika, u jekk m'għandekx memorja biżżejjed, allura huwa aħjar li tinstalla ondemand. Ejja nqabblu 2 għażliet ta 'kontroll ibbażati fuq id-dokumentazzjoni php.net u naraw kif il-favorit tiegħi huwa differenti minnhom statiku pm għal traffiku ta' volum għoli:

pm = dinamiku — in-numru ta’ proċessi tfal huwa kkonfigurat b’mod dinamiku abbażi tad-direttivi li ġejjin: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = fuq talba - proċessi huma maħluqa fuq talba (kuntrarju għall-ħolqien dinamiku, meta pm.start_servers huma mnedija meta s-servizz jibda).
pm = statiku — in-numru ta' proċessi tfal huwa fiss u huwa indikat mill-parametru pm.max_tfal.

Għad-dettalji, ara lista kompleta tad-direttivi globali php-fpm.conf.

Xebh bejn il-maniġer tal-proċess PHP-FPM u l-kontrollur tal-frekwenza tas-CPU

Dan jista 'jidher offtopic, imma jien ser torbot dan mas-suġġett tal-konfigurazzjoni PHP-FPM. Min ma esperjenzax tnaqqis fil-proċessur mill-inqas darba - fuq laptop, magna virtwali jew server dedikat. Ftakar l-iskala tal-frekwenza tas-CPU? Dawn l-għażliet huma disponibbli għal nix u Windows jistgħu jtejbu l-prestazzjoni tas-sistema u r-rispons billi jibdlu l-issettjar tat-throttle tal-proċessur minn ondemand fuq prestazzjoni*. Din id-darba, ejja nqabblu d-deskrizzjonijiet u nħarsu lejn ix-xebh:

gvernatur=ondemand — skalar dinamiku tal-frekwenza tal-proċessur skont it-tagħbija kurrenti. Jaqbeż malajr għall-frekwenza massima u mbagħad inaqqas hekk kif jiżdiedu l-perjodi ta 'inattività.
gvernatur=konservattiv= skalar tal-frekwenza dinamiku skond it-tagħbija kurrenti. Iżżid u tnaqqas il-frekwenza aktar bla xkiel minn fuq talba.
Gvernatur = prestazzjoni — il-frekwenza hija dejjem massima.

Għad-dettalji, ara lista sħiħa tal-parametri tar-regolatur tal-frekwenza tal-proċessur.

Ara x-xebh? Xtaqt nuri dan il-paragun biex nikkonvinċik li l-aħjar huwa li tuża pm statiku għal PHP-FPM.

Għall-parametru regolatur tal-proċessur prestazzjoni jgħin biex iżid il-prestazzjoni b'mod sikur minħabba li huwa kważi kompletament dipendenti fuq il-limitu tas-CPU tas-server. Minbarra dan, ovvjament, hemm ukoll fatturi bħat-temperatura, il-ħlas tal-batterija (f'laptop) u effetti sekondarji oħra li l-proċessur jitħaddem b'mod kostanti f'100%. L-issettjar tal-prestazzjoni jiżgura l-iktar prestazzjoni mgħaġġla tal-proċessur. Aqra, per eżempju, dwar parametru force_turbo fil-Raspberry Pi, li biha l-panel RPi se juża r-regolatur prestazzjoni, fejn it-titjib tal-prestazzjoni se jkun aktar notevoli minħabba l-veloċità baxxa tal-arloġġ tas-CPU.

L-użu ta 'pm static biex jinkiseb il-prestazzjoni massima tas-server

Għażla PHP-FPM pm statiku jiddependi ħafna fuq il-memorja ħielsa fuq is-server. Jekk il-memorja hija baxxa, huwa aħjar li tagħżel ondemand jew dinamika. Min-naħa l-oħra, jekk għandek memorja, tista 'tevita l-overhead tal-maniġer tal-proċess PHP billi tistabbilixxi pm statiku sal-kapaċità massima tas-server. Fi kliem ieħor, jekk kollox huwa kkalkulat tajjeb, għandek bżonn tistabbilixxi pm.static sal-volum massimu ta' proċessi PHP-FPM li jistgħu jiġu esegwiti, mingħajr ma toħloq problemi b'memorja baxxa jew cache. Iżda mhux daqshekk għoli li jegħleb lill-proċessuri u jakkumula mazz ta 'operazzjonijiet PHP-FPM li qed jistennew li jiġu eżegwiti.

Setup PHP-FPM: uża pm static għal prestazzjoni massima

Fil-screenshot ta 'hawn fuq, is-server għandu pm = statiku u pm.max_children = 100, u dan jieħu madwar 10 GB minn 32 disponibbli. Oqgħod attent għall-kolonni enfasizzati, kollox huwa ċar hawn. F'din il-screenshot kien hemm madwar 200 utent attiv (aktar minn 60 sekonda) fil-Google Analytics. F'dan il-livell, madwar 70% tal-proċessi tat-tfal PHP-FPM għadhom inattivi. Dan ifisser li PHP-FPM huwa dejjem issettjat għall-ammont massimu ta 'riżorsi tas-server irrispettivament mit-traffiku attwali. Proċess idle jistenna l-quċċati tat-traffiku u jirrispondi istantanjament. M'għandekx għalfejn tistenna sakemm pm se toħloq proċessi tfal u mbagħad ittemmhom meta jiskadi l-perjodu pm.process_idle_timeout. Issettja l-valur għal għoli ħafna pm.max_requestsminħabba li dan huwa server li jaħdem mingħajr tnixxijiet ta 'memorja fil-PHP. Tista 'tinstalla pm.max_requests = 0 bi statiku jekk inti kompletament kunfidenti fl-iskripts PHP eżistenti u futuri. Iżda huwa aħjar li terġa 'tmexxi l-iskripts maż-żmien. Issettja numru kbir ta 'talbiet, għaliex irridu nevitaw spejjeż mhux meħtieġa pm. Per eżempju, mill-inqas pm.max_requests = 1000 - skond il-kwantità pm.max_tfal u n-numru ta' talbiet kull sekonda.

Il-screenshot turi l-kmand Linux top, iffiltrat minn u (utent) u isem tal-utent PHP-FPM. L-ewwel 50 proċess biss huma murija (ma kontx għadd eżatt), iżda essenzjalment top turi l-aqwa statistika li tidħol fit-tieqa tat-terminal. F'dan il-każ magħżula minn % CPU (%CPU). Biex tara l-100 proċess PHP-FPM kollha, mexxi l-kmand:

top -bn1 | grep php-fpm

Meta tuża pm fuq talba u dinamiku

Jekk tuża pm dinamika, żbalji bħal dan iseħħu:

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

Ipprova ibdel il-parametru, l-iżball mhux se jmur, bħal deskritt f'din il-kariga fuq Serverfault. F'dan il-każ, il-valur pm.min kien żgħir wisq, u peress li t-traffiku tal-web ivarja tant u għandu qċaċet għoljin u widien fil-fond, huwa diffiċli li pm taġġusta b'mod adegwat dinamika. Normalment jintuża pm ondemand, kif avżat fl-istess kariga. Iżda dan huwa saħansitra agħar, għaliex ondemand itemm proċessi inattivi għal żero meta jkun hemm ftit jew xejn traffiku, u xorta tispiċċa bl-overhead tat-traffiku li qed jinbidel. Sakemm, ovvjament, ma tiffissax ħin ta 'stennija enormi. U allura huwa aħjar li tuża pm.static + numru għoli pm.max_requests.

PM dinamika u speċjalment ondemand jista' jkun utli jekk għandek diversi pools ta' PHP-FPM. Pereżempju, tospita kontijiet multipli cPanel jew websajts multipli f'pools differenti. Għandi server b', ngħidu aħna, 100+ kontijiet cpanel u madwar 200 dominju, u pm.static jew saħansitra dinamiku ma jsalvanix. Kulma għandek bżonn hawn hu ondemand, wara kollox, aktar minn żewġ terzi tal-websajts jirċievu ftit jew xejn traffiku, u bi ondemand il-proċessi tat-tfal kollha se jaqgħu, li se jiffrankawna ħafna memorja! Fortunatament, l-iżviluppaturi cPanel innotaw dan u stabbilixxew il-valur għal default ondemand. Preċedentement, meta l-inadempjenza kienet dinamika, PHP-FPM xejn ma kien adattat għal servers kondiviżi okkupati. Ħafna użaw suPHP, għax pm dinamika memorja kkunsmata anke b'pools idle u kontijiet cPanel PHP-FPM. Ħafna probabbli, jekk it-traffiku huwa tajjeb, ma tkunx ospitat fuq server b'numru kbir ta 'pools PHP-FPM (hosting kondiviż).

Konklużjoni

Jekk qed tuża PHP-FPM u t-traffiku tiegħek huwa tqil, maniġers tal-proċess ondemand и dinamika għall PHP-FPM se jkun limitat throughput minħabba l-overhead inerenti tagħhom. Ifhem is-sistema tiegħek u kkonfigura l-proċessi PHP-FPM skont il-kapaċità massima tas-server. L-ewwel sett pm.max_tfal skond l-użu massimu pm dinamika jew ondemand, u mbagħad żid dan il-valur għal livell fejn il-memorja u l-proċessur jaħdmu mingħajr ma jkunu mgħobbija żżejjed. Tinduna li ma pm statiku, peress li għandek kollox fil-memorja, spikes tat-traffiku se jikkawżaw inqas spikes tas-CPU maż-żmien, u l-medji tat-tagħbija tas-server u tas-CPU se jillivellaw. Id-daqs medju tal-proċess PHP-FPM jiddependi fuq is-server tal-web u jeħtieġ konfigurazzjoni manwali, għalhekk maniġers tal-proċess aktar awtomatizzati huma dinamika и ondemand - aktar popolari. Nispera li l-artiklu kien utli.

DUP Chart ta' referenza miżjud ab. Jekk il-proċessi PHP-FPM huma fil-memorja, il-prestazzjoni tiżdied għad-detriment tal-konsum tal-memorja fejn joqogħdu u jistennew. Sib l-aħjar għażla għalik innifsek.

Setup PHP-FPM: uża pm static għal prestazzjoni massima

Sors: www.habr.com

Żid kumment