PHP-FPM seadistamine: kasutame pm static maksimaalse jÔudluse saavutamiseks

PHP-FPM seadistamine: kasutame pm static maksimaalse jÔudluse saavutamiseks

Toimetamata artikkel ilmus esmakordselt aadressil haydenjames.io ja avaldatakse siin tema autor.

Kus ma lĂŒhidalt Ă”petan, kuidas PHP-FPM-i kĂ”ige paremini seadistada, et suurendada lĂ€bilaskevĂ”imet, vĂ€hendada latentsust ja stabiilsemalt kasutada protsessorite ja mĂ€luse ressursse. Vaikimisi on PM (process manager, protsessihaldur) PHP-FPM-is seadistatud vÀÀrtusele dynamic, ja kui teil on mĂ€lu puudus, siis on parem seadistada ondemand. VĂ”tame ette 2 haldusviisi php.net dokumentatsiooni pĂ”hjal ja vaatame, milles need minu lemmikust erinevad static suurte liiklusmahtude jaoks:

pm = dynamic — alampĂ”hised protsesside arv seadistatakse dĂŒnaamiliselt jĂ€rgmiste direktiivide pĂ”hjal: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand — protsessid luuakse nĂ”udmisel (erinevalt dĂŒnaamilisest loomise mehhanismist, kus pm.start_servers kĂ€ivituvad teenuse kĂ€ivitamisel).
pm = static — alampĂ”histe protsesside arv on fikseeritud ja mÀÀratud parameetriga pm.max_children.

Üksikasjade kohta vaata PHP-FPM.conf globaalsete direktiivide tĂ€ielik loetelu.

PHP-FPM protsessihalduri sarnasus protsessori sageduse reguleerijaga

See vĂ”ib tunduda off-topic, kuid ma kavatsen selle PHP-FPM seadistamise teemaga siduda. Kas keegi kogenud, et protsessor aeglustus — toteedes sĂŒlearvutis, virtuaalmasinas vĂ”i pĂŒhendatud serveris. Kas mĂ€letate protsessori sageduse skaleerimist? Need parameetrid, mis on saadaval nix ja Windows, vĂ”ivad sĂŒsteemi jĂ”udlust ja reageerimiskiirust suurendada, kui muuta protsessori regulaatori parameetrit ondemand . Tundub, et performance*. Seekord vĂ”rdleme kirjeldusi ja vaatame sarnasusi:

Governor = ondemand — dĂŒnaamiline protsessori sageduse skaleerimine vastavalt praegusele koormusele. TĂ”useb Ă€kki maksimaalsele sagedusele ning seejĂ€rel alandab seda, kui suureneb seisakute aeg.
Governor = conservative = dĂŒnaamiline skaleerimine vastavalt praegusele koormusele. Suurendab ja vĂ€hendab sagedust sujuvamalt kui ondemand.
Governor = performance — sagedus on alati maksimaalne.

Üksikasjade kohta vaata protsessori sageduse regulaatori parameetrite tĂ€ielik loetelu.

KĂŒsite sarnasusi? Soovisin nĂ€idata seda vĂ”rdlust, et veenda teid, et on parem kasutada pm static PHP-FPM-i jaoks.

Protsessori regulaatori parameeter performance aitab aitab aitab ohutult suurendada jÔudlust, kuna see sÔltub peaaegu tÀielikult serveri protsessori limiidist. Lisaks on muid tegureid, nagu temperatuur, aku laadimine (portatiivses arvutis) ja teised kÔrvalmÔjud, kui protsessor töötab 100% -selt. JÔudluse seadistamine tagab protsessori kiireima töö. Loe nÀiteks parameeter force_turbo Raspberry Pi-s, mille abil RPi paneel kasutab regulaatorit performance, kus jÔudluse paranemine on mÀrgatavam madala CPU taktsageduse tÔttu.

pm static kasutamine maksimaalse serveri jÔudluse saavutamiseks

PHP-FPM parameeter pm static sĂ”ltub suuresti serveris olevast vabast mĂ€lust. Kui mĂ€lu on vĂ€he, on parem valida ondemand vĂ”i dynamic. Teisest kĂŒljest, kui mĂ€lu on olemas, saab vĂ€ltida lisakulusid PHP protsessi haldurile, seadistades pm static serveri maksimaalsele mahule. TeisisĂ”nu, kui kĂ”ik on hĂ€sti lĂ€bi arvutatud, tuleks seadistada pm.static PHP-FPM, mis vĂ”ib töötada, ilma et see looks probleeme mĂ€lu vĂ”i vahemĂ€luga. Kuid mitte liiga kĂ”rgele, et mitte ĂŒle koormata protsessoreid ja kuhjata PHP-FPM operatsioone, mis ootavad tĂ€itmist..

PHP-FPM seadistamine: kasutame pm static maksimaalse jÔudluse saavutamiseks

Ülaloleval ekraanipildil on serveris seadistatud pm = static ja pm.max_children = 100, mis vĂ”tab ligikaudu 10 GB saadavast 32 GB-st. Pange tĂ€hele esile tĂ”stetud veerge, siin on kĂ”ik selge. Sellel ekraanipildil oli umbes 200 aktiivset kasutajat (rohkem kui 60 sekundi jooksul) Google Analyticsis. Sel tasemel on umbes 70% PHP-FPM alamelementidest endiselt inaktiivsed. See tĂ€hendab, et PHP-FPM on alati seadistatud serveri ressursside maksimaalsele mahule sĂ”ltumata praegusest liiklusest. Ooteprotsess ootab liikluse tippe ja reageerib kohe. Te ei pea ootama, kuni pm loob alamehhanisme ja lĂ”petab need, kui aeg on möödunud. pm.process_idle_timeout. Olen seadnud vĂ€ga suure vÀÀrtuse pm.max_requests, kuna see on tööserver ilma mĂ€lulekketa PHP-s. Saate seadistada pm.max_requests = 0 staticuga, kui olete tĂ€iesti kindel, et olemasolevates ja tulevastes PHP skriptides ei ole probleeme. Kuid parem on aeg-ajalt skripte taaskĂ€ivitada. Seadistage suur arv pĂ€ringuid, et vĂ€ltida lisakulusid. NĂ€iteks vĂ€hemalt pm.max_requests = 1000 kasutamise sĂ”ltuvalt arvust pm.max_children ja pĂ€ringute arvust sekundis.

Ekraanipildil on nÀidatud kÀsk Linux top, filtreeritud u (kasutaja) ja PHP-FPM kasutajanime jÀrgi. NÀidatud on vaid 50 vÔi nii protsessi (tÀpselt ei lugenud), aga pÔhimÔtteliselt nÀitab top top statistikat, mis mahub terminali aknasse. Sel juhul on sortimine % CPU (%CPU) jÀrgi. KÔikide 100 PHP-FPM protsessi nÀgemiseks kÀivitage kÀsk:

top -bn1 | grep php-fpm

Millal kasutada pm ondemand ja dynamic

Kui kasutada pm dynamic, tekivad sarnased vead:

HOIATUS: [basin xxxx] paistab hĂ”ivatud (vĂ”ib-olla peate suurendama pm.start_servers, vĂ”i pm.min/max_spare_servers), sĂŒnteesitakse 32 last, 4 on pea, ja 59 kokku last

Proovige seada parameetrit, error ei kao kusagile, nagu on kirjeldatud selles postituses Serverfaultis. Sel juhul oli pm.min vÀÀrtus liiga madal, ja kuna veebiliiklus on vĂ€ga kĂ”ikehĂ”lmav ja on suuri tippe ja sĂŒgavaid allakĂ€ike, on pm seadistamine keeruline. dynamic. Tavaliselt kasutatakse pm ondemand, nagu soovitatakse samas postituses. Kuid see on veel hullem, sest ondemand lĂ”petab passiivsed protsessid nulli, kui liiklust on vĂ€he vĂ”i pole ĂŒldse, ja lĂ”puks peate ikkagi tegelema liikumise muutumisega. Kui muidugi te ei ole seadnud suurt ooteaega. Ja siis on parem kasutada pm.static + suurt arvu pm.max_requests.

PM dynamic ja eriti ondemand vĂ”ivad olla kasulikud, kui teil on mitu PHP-FPM basaini. NĂ€iteks hostite mitut cPaneli kontot vĂ”i mitut veebisaiti erinevates basseinides. Mul on server, kus on nĂ€iteks 100+ cpaneli kontot ja umbes 200 domeeni ning pm.static vĂ”i isegi dynamic ei pÀÀstaks mind. Siin on vajalik ainult ondemand, sest rohkem kui kaks kolmandikku veebisaitidest saab vĂ€he liiklust vĂ”i ĂŒldse mitte, ja ondemand kĂ”ik lastel protsessid kukuvad Ă€ra, mis sÀÀstab meile tohutult mĂ€lu! Õnneks on cPaneli arendajad selle mĂ€rkama ja seadnud vaikimisi vÀÀrtuse ondemand. Varem, kui vaikimisi vÀÀrtus oli dynamic, siis PHP-FPM ei sobinud ĂŒlekoormatud jagatud serveritesse. Paljud kasutasid suPHP, sest pm dynamic kasutas mĂ€lu isegi passiivsete basseinide ja cPaneli kontode puhul PHP-FPM-i. TĂ”enĂ€oliselt, kui teie liiklus on hea, siis te ei hosti serveris, millel on palju PHP-FPM basseinide (jagatud majutamine).

KokkuvÔte

Kui kasutate PHP-FPM-i ja teie liiklus on tĂ”sine, siis protsesside haldurid ondemand ja dynamic PHP-FPM jaoks piiravad lĂ€bilaskevĂ”imet iseloomulike kulude tĂ”ttu. Uurige oma sĂŒsteemi ja seadistage PHP-FPM protsessid vastavalt serveri maksimaalsele mahtuvusele. Alustuseks mÀÀratlege pm.max_children sĂ”ltuvalt pm maksimaalsest kasutamisest dynamic vĂ”i ondemand, ja seejĂ€rel suurendage seda vÀÀrtust tasemeni, kus mĂ€lu ja protsessor töötavad ilma liigse koormuseta. Te mĂ€rkate, et pm static, kuna teil on kĂ”ik salvestatud mĂ€llu, pĂ”hjustavad liiklushooajad ajaga vĂ€hem tippkoormusi protsessorile ja serveri ning protsessori keskmised koormused tasanduvad. PHP-FPM keskmine protsessi suurus sĂ”ltub veebiserverist ja vajab kĂ€sitsi seadistamist, seega on automaatsemad protsessihaldurid — dynamic ja ondemand — populaarsemad. Loodan, et artikkel oli kasulik.

UPD Lisatud tulemuste diagramm ab. Kui PHP-FPM protsessid on mÀlus, suureneb jÔudlus mÀlutarbimise tÔttu, kus nad ootavad. Leidke endale optimaalne lahendus.

PHP-FPM seadistamine: kasutame pm static maksimaalse jÔudluse saavutamiseks

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster