Å Ä« raksta nerediÄ£Äta versija sÄkotnÄji tika publicÄta
Es jums Ä«sumÄ pastÄstÄ«Å”u, kÄ vislabÄk konfigurÄt PHP-FPM, lai palielinÄtu caurlaidspÄju, samazinÄtu latentumu un konsekventÄk izmantotu centrÄlo procesoru un atmiÅu. PÄc noklusÄjuma PHP-FPM rinda PM (procesu pÄrvaldnieks) ir dinamisks, un, ja jums nav pietiekami daudz atmiÅas, tad labÄk ir instalÄt pÄc pieprasÄ«juma. SalÄ«dzinÄsim 2 vadÄ«bas opcijas, pamatojoties uz php.net dokumentÄciju, un redzÄsim, kÄ mans favorÄ«ts atŔķiras no tiem statisks pm liela apjoma satiksmei:
pm = dinamisks ā pakÄrtoto procesu skaits tiek konfigurÄts dinamiski, pamatojoties uz Å”ÄdÄm direktÄ«vÄm: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = pÄc pieprasÄ«juma - procesi tiek izveidoti pÄc pieprasÄ«juma (atŔķirÄ«bÄ no dinamiskÄs izveides, kad pm.start_servers tiek palaists, kad pakalpojums sÄkas).
pm = statisks ā bÄrnprocesu skaits ir fiksÄts un norÄdÄ«ts ar parametru pm.max_bÄrni.
SÄ«kÄku informÄciju sk
PHP-FPM procesa pÄrvaldnieka un CPU frekvences kontrollera lÄ«dzÄ«bas
Tas var Ŕķist netopisks, bet es to saistÄ«Å”u ar PHP-FPM konfigurÄcijas tÄmu. KurÅ” gan vismaz vienu reizi nav pieredzÄjis procesora palÄninÄÅ”anos ā klÄpjdatorÄ, virtuÄlajÄ maŔīnÄ vai speciÄlÄ serverÄ«? Atcerieties CPU frekvences mÄrogoÅ”anu? Å Ä«s opcijas ir pieejamas nix un Windows var uzlabot sistÄmas veiktspÄju un reaÄ£ÄtspÄju, mainot procesora droseļvÄrsta iestatÄ«jumu no pÄc pieprasÄ«juma par sniegums*. Å oreiz salÄ«dzinÄsim aprakstus un aplÅ«kosim lÄ«dzÄ«bas:
gubernators=pÄc pieprasÄ«juma ā procesora frekvences dinamiska mÄrogoÅ”ana atkarÄ«bÄ no paÅ”reizÄjÄs slodzes. Ätri pÄriet uz maksimÄlo frekvenci un pÄc tam to samazina, palielinoties neaktivitÄtes periodiem.
gubernators=konservatÄ«vs= dinamiskÄ frekvences mÄrogoÅ”ana atkarÄ«bÄ no paÅ”reizÄjÄs slodzes. Palielina un samazina frekvenci vienmÄrÄ«gÄk nekÄ pÄc pieprasÄ«juma.
Gubernators = sniegums ā frekvence vienmÄr ir maksimÄlÄ.
SÄ«kÄku informÄciju sk
Vai redzi lÄ«dzÄ«bas? Es gribÄju parÄdÄ«t Å”o salÄ«dzinÄjumu, lai pÄrliecinÄtu jÅ«s, ka to vislabÄk izmantot pm statisks PHP-FPM.
Procesora regulatora parametram sniegums palÄ«dz droÅ”i palielinÄt veiktspÄju, jo tas gandrÄ«z pilnÄ«bÄ ir atkarÄ«gs no servera CPU ierobežojuma. Papildus tam, protams, pastÄv arÄ« tÄdi faktori kÄ temperatÅ«ra, akumulatora uzlÄde (klÄpjdatorÄ) un citas blakusparÄdÄ«bas, kas saistÄ«tas ar nepÄrtrauktu procesora darbÄ«bu 100%. VeiktspÄjas iestatÄ«jums nodroÅ”ina ÄtrÄko procesora veiktspÄju. Lasiet, piemÄram, par
Pm static izmantoÅ”ana, lai sasniegtu maksimÄlu servera veiktspÄju
PHP-FPM opcija pm statisks lielÄ mÄrÄ ir atkarÄ«gs no brÄ«vÄs atmiÅas serverÄ«. Ja atmiÅa ir maza, labÄk izvÄlÄties pÄc pieprasÄ«juma vai dinamisks. No otras puses, ja jums ir atmiÅa, varat izvairÄ«ties no PHP procesa pÄrvaldnieka, iestatot pm statisks lÄ«dz maksimÄlajai servera jaudai. Citiem vÄrdiem sakot, ja viss ir labi aprÄÄ·inÄts, jums ir jÄizveido pm.statisks maksimÄlajam PHP-FPM procesu apjomam, ko var izpildÄ«t, neradot problÄmas ar zemu atmiÅu vai keÅ”atmiÅu. Bet ne tik augsts, lai tas pÄrslogotu procesorus un uzkrÄtu virkni PHP-FPM operÄciju, kas gaida izpildi..
IepriekÅ” redzamajÄ ekrÄnuzÅÄmumÄ serverim ir pm = statisks un pm.max_children = 100, un tas aizÅem aptuveni 10 GB no pieejamajiem 32. PievÄrsiet uzmanÄ«bu izceltajÄm kolonnÄm, Å”eit viss ir skaidrs. Å ajÄ ekrÄnuzÅÄmumÄ pakalpojumÄ Google Analytics bija aptuveni 200 aktÄ«vu lietotÄju (vairÄk nekÄ 60 sekundes). Å ajÄ lÄ«menÄ« aptuveni 70% PHP-FPM pakÄrtoto procesu joprojÄm ir dÄ«kstÄvÄ. Tas nozÄ«mÄ, ka PHP-FPM vienmÄr ir iestatÄ«ts uz maksimÄlo servera resursu daudzumu neatkarÄ«gi no paÅ”reizÄjÄs trafika. DÄ«kstÄves process gaida satiksmes maksimumu un nekavÄjoties reaÄ£Ä. Jums nav jÄgaida lÄ«dz pm izveidos pakÄrtotos procesus un pÄc tam pÄrtrauks tos, kad periods beigsies pm.process_idle_timeout. Es iestatÄ«ju vÄrtÄ«bu uz ļoti augstu pm.max_requestsjo Å”is ir strÄdÄjoÅ”s serveris bez atmiÅas noplÅ«dÄm PHP. JÅ«s varat instalÄt pm.max_requests = 0 ar statisko, ja esat pilnÄ«gi pÄrliecinÄts par esoÅ”ajiem un turpmÄkajiem PHP skriptiem. Bet labÄk laika gaitÄ skriptus palaist atkÄrtoti. Iestatiet lielu pieprasÄ«jumu skaitu, jo mÄs vÄlamies izvairÄ«ties no nevajadzÄ«gÄm pm izmaksÄm. PiemÄram, vismaz pm.max_requests = 1000 - atkarÄ«bÄ no daudzuma pm.max_bÄrni un pieprasÄ«jumu skaits sekundÄ.
EkrÄnuzÅÄmums parÄda komandu
top -bn1 | grep php-fpm
Kad lietot pm ondemand un dinamisku
Ja izmanto pm dinamisks, rodas Å”Ädas kļūdas:
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
MÄÄ£iniet mainÄ«t parametru, kļūda nepazudÄ«s, piemÄram
PM dinamisks un jo Ä«paÅ”i pÄc pieprasÄ«juma var noderÄt, ja jums ir vairÄki PHP-FPM pÅ«li. PiemÄram, jÅ«s mitinÄt vairÄkus cPanel kontus vai vairÄkas vietnes dažÄdos pÅ«los. Man ir serveris ar, teiksim, 100+ cpanel kontiem un apmÄram 200 domÄniem, un pm.static vai pat dynamic mani neglÄbtu. Viss, kas jums nepiecieÅ”ams Å”eit, ir pÄc pieprasÄ«juma, galu galÄ vairÄk nekÄ divas treÅ”daļas vietÅu saÅem nelielu trafiku vai tÄs nav vispÄr, un ar pÄc pieprasÄ«juma visi bÄrnu procesi izkritÄ«s, kas ietaupÄ«s mums daudz atmiÅas! Par laimi, cPanel izstrÄdÄtÄji to pamanÄ«ja un iestatÄ«ja vÄrtÄ«bu uz noklusÄjuma vÄrtÄ«bu pÄc pieprasÄ«juma. IepriekÅ”, kad noklusÄjuma bija dinamisks, PHP-FPM vispÄr nebija piemÄrots aizÅemtiem koplietotiem serveriem. Daudzi ir lietojuÅ”i suPHP, jo pm dinamisks patÄrÄtÄ atmiÅa pat ar dÄ«kstÄves pÅ«liem un cPanel PHP-FPM kontiem. VisticamÄk, ja trafiks ir labs, jÅ«s netiksiet mitinÄts serverÄ« ar lielu PHP-FPM pÅ«lu skaitu (shared hosting).
SecinÄjums
Ja izmantojat PHP-FPM un jÅ«su trafika ir liela, procesu vadÄ«tÄji pÄc pieprasÄ«juma Šø dinamisks PHP-FPM bÅ«s ierobežota caurlaidspÄja to raksturÄ«go pieskaitÄmo izmaksu dÄļ. Izprotiet savu sistÄmu un konfigurÄjiet PHP-FPM procesus atbilstoÅ”i maksimÄlajai servera jaudai. Pirmais komplekts pm.max_bÄrni atkarÄ«bÄ no maksimÄlÄ pm lietojuma dinamisks vai pÄc pieprasÄ«juma, un pÄc tam palieliniet Å”o vÄrtÄ«bu lÄ«dz lÄ«menim, kurÄ atmiÅa un procesors darbosies bez pÄrslodzes. JÅ«s to pamanÄ«sit ar pm statisks, tÄ kÄ jums ir viss atmiÅÄ, trafika kÄpumi laika gaitÄ radÄ«s mazÄku CPU pieaugumu, un servera un CPU slodzes vidÄjÄs vÄrtÄ«bas izlÄ«dzinÄsies. VidÄjais PHP-FPM procesa lielums ir atkarÄ«gs no tÄ«mekļa servera, un tam ir nepiecieÅ”ama manuÄla konfigurÄÅ”ana, tÄpÄc ir vairÄk automatizÄtu procesu pÄrvaldnieku dinamisks Šø pÄc pieprasÄ«juma - populÄrÄks. Ceru, ka raksts bija noderÄ«gs.
DUP Pievienota etalona diagramma
Avots: www.habr.com