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

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

Muudatamata artikli versioon avaldati algselt saidil haydenjames.io ja avaldatakse siin tema autori.

KĂŒsin lĂŒhidalt, kuidas seadistada PHP-FPM, et suurendada lĂ€bilaskevĂ”imet, vĂ€hendada latentsust ning stabiilsemalt kasutada protsessoriressursse ja mĂ€lu. Vaikimisi on PHP-FPM-i protsessihalduri rida dĂŒnaamiline, ja kui mĂ€lu on vĂ€he, on parem seadistada nĂ”udmisel. Vaatame kahte haldamisvĂ”imalust php.net dokumentatsiooni pĂ”hjal ja vĂ”rrelgeme, kuidas need erinevad minu lemmikust staatiline sĂŒsteemist suure liikluse korral:

pm = dĂŒnaamiline — alamsĂŒsteemide arv kohandatakse dĂŒnaamiliselt jĂ€rgmiste direktiivide pĂ”hjal: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = nĂ”udmisel — protsessid luuakse nĂ”udmisel (erinevalt dĂŒnaamilisest loomisest, kui pm.start_servers kĂ€ivitatakse teenuse kĂ€ivitamisel).
pm = staatiline — alamsĂŒsteemide arv on fikseeritud ja mÀÀratakse parameetriga pm.max_children.

Üksikasju leiate tĂ€ielikku nimekirja globaalsetest direktiividest php-fpm.conf.

PHP-FPM protsessi halduri sarnasused protsessori sageduse regulaatoriga

See vĂ”ib tunduda offtopic, kuid kavatsen selle siduda PHP-FPM seadistamise teemaga. Kas keegi pole kunagi kogenud protsessori pidurdumist — olgu see sĂŒlearvutis, virtuaalmasinas vĂ”i pĂŒhendatud serveris? Kas mĂ€letate protsessori sageduse skaalamist? Need seadistused, mis on saadaval nii nixis kui ka Windowsis, vĂ”ivad suurendada sĂŒsteemi jĂ”udlust ja reageerimiskiirus, kui muuta protsessoriregulaatori parameeter nĂ”udmisel jĂ€rgnevaga performance*. Seekord vĂ”rreldakse kirjeldusi ja uuritakse sarnasusi:

Governor = ondemand — protsessori sageduse dĂŒnaamiline skaalamine sĂ”ltuvalt praegusest koormusest. TĂ”useb jĂ€rsult maksimaalsele sagedusele, seejĂ€rel vĂ€heneb, kui vabad perioodid suurenevad.
Governor = conservative = dĂŒnaamiline sageduse skaalamine sĂ”ltuvalt praegusest koormusest. Suurendab ja vĂ€hendab sagedust sujuvamalt kui ondemand.
Governor = performance — sagedus on alati maksimaalne.

Üksikasju leiate tĂ€ielik loetelu protsessoriregulaatori parameetritest.

Kas nÀete sarnasust? Soovisin nÀidata seda vÔrdlust, et veenda teid, et parim valik on pm static PHP-FPM jaoks.

Protsessoriregulaatori parameeter performance aitab aitab turvaliselt suurendada jĂ”udlust, kuna see sĂ”ltub peaaegu tĂ€ielikult serveri protsessori piirangust. Loomulikult on veel faktoreid, nagu temperatuur, aku laadimine (sĂŒlearvutis) ja muud kĂ”rvaltoimed, mis tulenevad protsessori pidevast töötamisest 100% koormusel. JĂ”udluse seadistamine tagab protsessori kiireima töö. Loe nĂ€iteks Raspberry Pi force_turbo parameetrist, millega 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 serveri vaba mĂ€lust. Kui mĂ€lu on vĂ€he, oleks parem valida nĂ”udmisel vĂ”i dĂŒnaamiline. Teisest kĂŒljest, kui teil on mĂ€lu, saate vĂ€ltida PHP protsessihalduri liigset kulu, seadistades pm staatiline serveri maksimaalsele mahule. TeisisĂ”nu, kui kĂ”ik on hĂ€sti kokku arvestatud, tuleb seadistada pm.static PHP-FPM maksimaalsete protsesside mahule, mis vĂ”ivad töötada, mĂ€luprobleemide vĂ”i vahemĂ€lu puudumise tĂ”ttu. Kuid mitte liiga kĂ”rgele, et CPUsid ĂŒle koormata ja kuhjata suurt hulka PHP-FPM operatsioone, mis ootavad tĂ€itmist..

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

Ülaltoodud ekraanipildil on serveril seadistatud pm = static ja pm.max_children = 100., ja see vĂ”tab umbes 10 GB olemasolevast 32 GB-st. Pange tĂ€hele esile toodud veerge, siin on kĂ”ik selge. Sel ekraanipildil oli umbes 200 aktiivset kasutajat (ĂŒle 60 sekundi) Google Analytics's. Selle taseme juures on umbes 70% PHP-FPM alamprotsessidest endiselt passiivsed. See tĂ€hendab, et PHP-FPM on alati seadistatud serveri maksimaalsete ressursside kasutamiseks, sĂ”ltumata praegusest liiklusest. Passiivne protsess ootab liikluse tippusid ja reageerib hetkega. Te ei pea ootama, kuni pm loob alamprotsessid ja siis lĂ”petab need, kui aeg on lĂ€bi. pm.process_idle_timeout. Ma seadistasin sellele vĂ€ga suure vÀÀrtuse pm.max_requests, sest see on töötav server, kus ei esine PHP mĂ€lu leket. VĂ”ite seada pm.max_requests = 0. Kasutage static, kui olete tĂ€iesti kindel olemasolevates ja tulevastes PHP skriptides. Kuid parem on skripte aeg-ajalt taaskĂ€ivitada. Seadke suur kĂŒsimuste arv, et vĂ€ltida liigseid kulutusi pm. NĂ€iteks vĂ€hemalt pm.max_requests = 1000 — sĂ”ltuvalt arvust pm.max_children ja sekundis tehtud pĂ€ringute arvust.

KĂŒ screenshotil on nĂ€idatud kĂ€sk Linux top, filtreeritud u (kasutaja) ja PHP-FPM kasutajanime jĂ€rgi. NĂ€idatud on ainult esimesed 50 protsessi (tĂ€pselt ei lugenud), kuid pĂ”himĂ”tteliselt nĂ€itab top statistikat, mis mahub terminali aknasse. Sel juhul on sorteerimine % CPU (%CPU) jĂ€rgi. KĂ”ik 100 PHP-FPM protsessi vaatamiseks kĂ€ivitage kĂ€sk:

top -bn1 | grep php-fpm

Millal kasutada pm ondemand ja dynamic

Kui kasutada pm dĂŒnaamiline, siis tekivad sellised vead:

WARNING: [pool xxxx] nÀib olevat hÔivatud (vÔite vajada pm.start_servers vÔi pm.min/max_spare_servers suurendamist), genereerides 32 last, ja 4 on ootel, kokku 59 last

Proovige parameetrit muuta, viga ei kao kuhugi, nagu on kirjeldatud selles Serverfault postituses. Sel juhul oli pm.min vÀÀrtus liiga vĂ€ike, ning kuna veebiliiklus muutub tugevalt ja tal on suured tipud ja sĂŒgavad langused, on keeruline pm adekvaatselt seadistada. dĂŒnaamiline. Tavaliselt kasutatakse pm nĂ”udmisel, nagu soovitatakse samas postituses. Aga see on veel hullem, sest nĂ”udmisel lĂ”petab tegevusetud protsessid nulli, kui liiklust on vĂ€he vĂ”i ei ole ĂŒldse, ja lĂ”ppkokkuvĂ”ttes pead sa ikka kannatama kulude all liikluse muutumise korral. Kui just ei ole seadnud tohutut ooteaega. Ja siis on parem kasutada pm.static + kĂ”rge arv pm.max_requests.

PM dĂŒnaamiline ja eriti nĂ”udmisel vĂ”ivad osutuda kasulikeks, kui sul on mitu PHP-FPM basseini. NĂ€iteks, kui majutad mitu cPaneli kontot vĂ”i mitu veebisaiti erinevates basseinides. Mul on server, kus on ĂŒtleme 100+ cPaneli kontot ja umbes 200 domeeni, ja pm.static vĂ”i isegi dynamic ei pÀÀstaks mind. Siin on vaja ainult nĂ”udmisel, sest rohkem kui kaks kolmandikku veebilehtedest teenib vĂ€he liiklust vĂ”i ei teenigi ĂŒldse, ja nĂ”udmisel kĂ”ik alamprotsessid kukuvad kokku, sÀÀstes meile tohutult mĂ€lu! Õnneks on cPaneli arendajad seda mĂ€rganud ja seadnud vaikevÀÀrtuse nĂ”udmisel. Varem, kui vaikevÀÀrtus oli dĂŒnaamiline, ei olnud PHP-FPM ĂŒldse sobilik koormatud jagatud serverite jaoks. Paljud kasutasid suPHP, sest pm dĂŒnaamiline kasutatakse mĂ€lu isegi siis, kui cPanel PHP-FPM koopiad ja kontod on inaktiivsed. TĂ”enĂ€oliselt ei soovi te suurte PHP-FPM koopiate arvuga serveris asuda (ĂŒhishosting) kĂ”rge liikluse korral.

KokkuvÔte

Kui kasutate PHP-FPM-i ja teie liiklus on mĂ€rkimisvÀÀrne, piiravad protsessihaldurid nĂ”udmisel ja dĂŒnaamiline PHP-FPM-i jaoks ribalaiust, kuna neil on iseenesest kulud. Uurige oma sĂŒsteemi ja seadistage PHP-FPM-i protsessid vastavalt serveri maksimaalsele mahutavusele. Esmalt seadistage pm.max_children maksimaalse kasutamise pm sĂ”ltuvalt dĂŒnaamiline vĂ”i nĂ”udmisel, seejĂ€rel suurendage seda vÀÀrtust tasemeni, kus mĂ€lu ja protsessor töötavad ilma liigse koormuseta. Te mĂ€rkate, et kuna pm static, kĂ”ik hoitakse mĂ€lus, liikluspiigid pĂ”hjustavad aja jooksul protsessori jaoks vĂ€hem tippe ja serveri ning protsessori keskmised koormused tasanduvad. PHP-FPM-i protsessi keskmine suurus sĂ”ltub veebi serverist ja vajab kĂ€si-seadistust, seetĂ”ttu on rohkem automatiseeritud protsessihaldurid dĂŒnaamiline ja nĂ”udmisel — populaarsed. Loodan, et artikkel oli kasulik.

UPD Lisatud on mÔÔdikute diagramm ab. Kui PHP-FPM protsessid on mÀlus, suureneb jÔudlus mÀlutarbimise arvelt, kus nad ootavad. Leidke endale optimaalne variant.

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

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster