
Muudatamata artikli versioon avaldati algselt saidil ja avaldatakse siin tema .
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 .
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 .
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 , 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..
Ă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 , 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-fpmMillal 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 lastProovige parameetrit muuta, viga ei kao kuhugi, nagu . 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, . 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 . Kui PHP-FPM protsessid on mÀlus, suureneb jÔudlus mÀlutarbimise arvelt, kus nad ootavad. Leidke endale optimaalne variant.
Allikas: habr.com
