
Versioni e papërpunuar e artikullit u publikua fillimisht në dhe botohet këtu me lejen e tij .
Do të shpjegoj shkurtimisht se si të konfiguroni më mirë PHP-FPM për të rritur kapacitetin, për të reduktuar vonesën dhe për të përdorur burimet e procesorit dhe memorjes më stabilisht. Për default, rreshti PM (menaxheri i proceseve) në PHP-FPM ka vlerën dynamic, dhe nëse ju mungon memorie, është më mirë të vendosni ondemand. Le të krahasojmë dy opsione menaxhimi sipas dokumentacionit php.net dhe të shohim se çfarë e ndan preferencën time static pm për volum të madh trafiku:
pm = dynamic â numri i proceseve dytĂ«sore konfigurtohet dinamikisht nĂ« bazĂ« tĂ« pĂ«rmbledhjeve tĂ« mĂ«poshtme: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand â proceset krijohen sipas kĂ«rkesĂ«s (ndryshe nga krijimi dinamik, kur pm.start_servers janĂ« aktivizuar gjatĂ« nisjes sĂ« shĂ«rbimit).
pm = static â numri i proceseve dytĂ«sore Ă«shtĂ« i rregullt dhe pĂ«rcaktohet nga parametrin pm.max_children.
Për detajet, shihni në .
Ngjashmëria e menaxherit të proceseve PHP-FPM me rregullatorin e frekuencës së procesorit
Kjo mund të duket si një offtopik, por unë do të lidhem me temën e konfigurimit të PHP-FPM. Kush nuk ka pasur një procesor që ka ngadalësuar ndonjëherë - në një laptop, makinë virtuale ose server të dedikuar. A e mbani mend rritjen e frekuencës së procesorit? Këto parameter, të disponueshëm për nix dhe Windows, mund të rrisin performancën dhe shpejtësinë e përgjigjes së sistemit, nëse ndryshoni parametrin e rregullatorit të procesorit nga ondemand në performance*. Tani, le të krahasoni përshkrimet dhe të shohim ngjashmëritë:
Governor = ondemand â rritje dinamike e frekuencĂ«s sĂ« procesorit nĂ« bazĂ« tĂ« ngarkesĂ«s aktuale. Kalon menjĂ«herĂ« nĂ« frekuencĂ«n maksimale dhe pastaj e ul atĂ« kur periudhat e pushimit rriten.
Governor = conservative = rritje dinamike e frekuencës në përputhje me ngarkesën aktuale. Rrit dhe ulet frekuencën më butë se ondemand.
Governor = performance â frekuenca Ă«shtĂ« gjithmonĂ« maksimale.
Për detajet, shihni në .
E shihni ngjashmërinë? Unë doja të tregoj këtë krahasim për t'ju bindur se është më mirë të përdorni pm static për PHP-FPM.
Për rregullatorin e procesorit, parametri performance ndihmon në rritjen e sigurt të performancës, sepse ajo përfshin pothuajse plotësisht kufirin e procesorit të serverit. Përveç kësaj, natyrisht, ka faktorë të tjerë si temperatura, ngarkesa e baterisë (në laptop) dhe efekte të tjera anësore të punës së vazhdueshme të procesorit në 100%. Konfigurimi i performance siguron funksionimin më të shpejtë të procesorit. Shikoni, për shembull, për parametrin , ku paneli RPi do të përdorë rregullatorin performance, ku përmirësimi i performancës do të jetë më i dukshëm për shkak të frekuencës së ulët të CPU.
Përdorimi i pm static për arritjen e performancës maksimale të serverit
Parametri PHP-FPM pm static në masë të madhe varet nga memorja e lirë në server. Nëse memorie është e vogël, është më mirë të zgjidhni ondemand ose dynamic. Nga ana tjetër, nëse keni memorie, mund të shmangni shpenzimet e panevojshme të menaxherit të proceseve PHP duke vendosur pm static në kapacitetin maksimal të serverit. Me fjalë të tjera, nëse e keni bërë mirë llogaritjen, duhet të vendosni pm.static në numrin maksimal të proceseve PHP-FPM që mund të ekzekutohen, pa krijuar probleme me mungesën e memories ose caches. Por jo kaq lart sa të mbingarkoni procesorët dhe të grumbulloni një numër të madh operacione PHP-FPM që presin të ekzekutohen..
NĂ« screenshotin e lart, serveri ka pm = static dhe pm.max_children = 100, dhe kjo merr pĂ«rafĂ«rsisht 10 GB nga 32 qĂ« janĂ« tĂ« disponueshme. Vini re kolonat e theksuara, gjithçka Ă«shtĂ« e qartĂ«. NĂ« kĂ«tĂ« screenshot kishte pĂ«rafĂ«rsisht 200 pĂ«rdorues aktivĂ« (mĂ« shumĂ« se 60 sekonda) nĂ« Google Analytics. NĂ« kĂ«tĂ« nivel, pĂ«rafĂ«rsisht 70% e proceseve dytĂ«sore tĂ« PHP-FPM janĂ« ende tĂ« papĂ«rdorura. Kjo do tĂ« thotĂ« se PHP-FPM Ă«shtĂ« gjithmonĂ« e vendosur nĂ« maksimumin e burimeve tĂ« serverit, pavarĂ«sisht nga trafiku aktual. Procesi i padukshĂ«m pret periudhat e trafikut dhe reagon menjĂ«herĂ«. Ju nuk keni nevojĂ« tĂ« prisni qĂ« pm tĂ« krijojĂ« procese dytĂ«sore dhe mĂ« pas t'i pĂ«rfundojĂ« ato kur kalon periudha pm.process_idle_timeout. UnĂ« kam vendosur njĂ« vlerĂ« shumĂ« tĂ« madhe pĂ«r pm.max_requests, sepse ky Ă«shtĂ« njĂ« server nĂ« punĂ« pa rrjedhje memorjeje nĂ« PHP. Mund tĂ« vendosni pm.max_requests = 0 me static, nĂ«se jeni plotĂ«sisht tĂ« sigurt pĂ«r skemat aktuale dhe tĂ« ardhshme PHP. Por Ă«shtĂ« mĂ« mirĂ« tĂ« riktheheni skemat me kalimin e kohĂ«s. Vendosni njĂ« numĂ«r tĂ« madh kĂ«rkesash, sepse ne duam tĂ« shmangim shpenzimet e panevojshme tĂ« pm. PĂ«r shembull, tĂ« paktĂ«n pm.max_requests = 1000 â nĂ« varĂ«si tĂ« numrit pm.max_children dhe numrit tĂ« kĂ«rkesave nĂ« sekondĂ«.
Në screenshotin është shfaqur komanda , i filtruar sipas u (user) dhe emrit të përdoruesit PHP-FPM. Të shfaqura janë vetëm 50 proceset e para ose afërsisht, por në thelb, top tregon statistikat kryesore që vendosen në dritaren e terminalit. Në këtë rast me renditje sipas % CPU (%CPU). Për të parë të gjitha 100 proceset PHP-FPM, ekzekutoni komandën:
top -bn1 | grep php-fpmKur të përdorni pm ondemand dhe dynamic
Nëse përdorni pm dynamic, ndodhin gabime të tilla:
WARNING: [pool xxxx] duket se është i zënë (ndoshta duhet të rritni pm.start_servers, ose pm.min/max_spare_servers), duke krijuar 32 fëmijë, ka 4 të papunë, dhe 59 fëmijë gjithsejProvoni të ndryshoni parametrin, gabimi nuk do të zhduket, siç . Në këtë rast, vlera pm.min ishte shumë e vogël, dhe siç ndodh, trafiku në internet ndryshon shumë dhe ka majat dhe uljet e thella, është e vështirë të konfigurohet siç duhet pm dynamic. Zakonisht përdoret pm ondemand, . Por kjo është edhe më keq, sepse ondemand shuan proceset pa aktivizim në zero, kur trafik është pak ose aspak, dhe në fund do të duroni akoma kostot me ndryshimin e trafikut. Nëse, sigurisht, nuk keni vendosur një kohë pritjeje të madhe. Atëherë më mirë të përdorni pm.static + numra të lartë pm.max_requests.
PM dynamic dhe posaçërisht ondemand mund të jenë të dobishme, nëse keni disa grupe PHP-FPM. Për shembull, po hostoni disa llogari cPanel ose disa faqe në internet në grupe të ndryshme. Kam një server, ku, le të themi, ka 100+ llogari cpanel dhe rreth 200 domene, dhe pm.static ose madje edhe dynamic nuk do të më shpëtonte. Këtu është vetëm ondemand, sepse më shumë se dy të tretat e faqeve në internet marrin pak trafik ose aspak, dhe me ondemand të gjitha proceset fëmijë do të bien, e cila do të na kursejë shumë memorie! Fatmirësisht, zhvilluesit e cPanel e vunë re këtë dhe vendosën vlerën e parazgjedhur ondemand. Më parë, kur vlera e parazgjedhur ishte dynamic, PHP-FPM nuk ishte aspak i përshtatshëm për serverët e ngarkuar ndarës. Shumë përdorën suPHP, sepse pm dynamic shmangte memorie edhe kur grupet dhe llogaritë cPanel PHP-FPM ishin pa aktivitet. Shumë mundësisht, nëse keni trafik të mirë, nuk do të jeni duke u hostuar në një server me numër të madh grupesh PHP-FPM (hostimi i përgjithshëm).
Përfundimi
NĂ«se pĂ«rdorni PHP-FPM dhe keni trafik serioz, menaxherĂ«t e proceseve ondemand dhe dynamic pĂ«r PHP-FPM do tĂ« kufizojnĂ« kapacitetin e kalimeve pĂ«r shkak tĂ« kostove qĂ« kanĂ«. Hidhni njĂ« sy sistemit tuaj dhe konfiguroni proceset PHP-FPM sipas kapacitetit maksimal tĂ« serverit. SĂ« pari vendosni pm.max_children nĂ« varĂ«si tĂ« pĂ«rdorimit maksimal pm dynamic ose ondemand, pastaj rriteni kĂ«tĂ« vlerĂ« deri nĂ« nivelin ku memoria dhe procesori do tĂ« punojnĂ« pa mbingarkesĂ« tĂ« tepĂ«rt. Do tĂ« vini re se me pm static, pasi gjithçka ruhet nĂ« memorie, majat e trafikĂ«ve me kalimin e kohĂ«s do tĂ« shkaktojnĂ« mĂ« pak majat pĂ«r procesorin, dhe mesatarja e ngarkesĂ«s sĂ« serverit dhe procesorit do tĂ« rregullohet. MadhĂ«sia mesatare e procesit PHP-FPM varet nga serveri nĂ« internet dhe kĂ«rkon konfigurim manual, prandaj menaxherĂ«t e proceseve mĂ« automatizuar â dynamic dhe ondemand â janĂ« mĂ« tĂ« njohur. Shpresoj qĂ« artikulli ishte i dobishĂ«m.
UPD Shtuar një diagram benchmark . Nëse proceset PHP-FPM janë në memorie, performanca rritet për shkak të konsumit të memories, ku ata qëndrojnë dhe presin. Gjeni opsionin optimal për vete.
Burimi: habr.com
