PHP-FPM iestatÄ«Å”ana: izmantojiet pm static, lai nodroÅ”inātu maksimālu veiktspēju

PHP-FPM iestatÄ«Å”ana: izmantojiet pm static, lai nodroÅ”inātu maksimālu veiktspēju

Å Ä« raksta nerediģēta versija sākotnēji tika publicēta haydenjames.io un publicēts Å”eit ar viņas atļauju autors.

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 pilns globālo direktīvu saraksts php-fpm.conf.

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 pilns procesora frekvences regulatora parametru saraksts.

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 force_turbo parametrs programmā Raspberry Pi, ar kuru RPi panelis izmantos regulatoru sniegums, kur veiktspējas uzlabojums bÅ«s pamanāmāks zemā CPU takts frekvences dēļ.

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..

PHP-FPM iestatÄ«Å”ana: izmantojiet pm static, lai nodroÅ”inātu maksimālu veiktspēju

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 Linux tops, filtrēts pēc u (lietotājs) un PHP-FPM lietotājvārda. Tiek parādīti tikai pirmie aptuveni 50 procesi (es neskaitīju precīzi), bet būtībā top parāda labāko statistiku, kas iekļaujas termināļa logā. Šajā gadījumā sakārtots pēc % CPU (%CPU). Lai redzētu visus 100 PHP-FPM procesus, palaidiet 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 aprakstÄ«ts Å”ajā ziņā par Serverfault. Å ajā gadÄ«jumā pm.min vērtÄ«ba bija pārāk maza, un, tā kā tÄ«mekļa datplÅ«sma ir ļoti atŔķirÄ«ga un tai ir augstas virsotnes un dziļas ielejas, ir grÅ«ti atbilstoÅ”i pielāgot pm. dinamisks. Parasti izmanto pm pēc pieprasÄ«juma, kā ieteikts tajā paŔā ierakstā. Bet tas ir vēl sliktāk, jo pēc pieprasÄ«juma pārtrauc dÄ«kstāves procesus lÄ«dz nullei, ja trafika ir maza vai tās nav vispār, un jums joprojām bÅ«s jāmaksā par trafika maiņu. Ja vien, protams, neesat iestatÄ«jis milzÄ«gu gaidÄ«Å”anas laiku. Un tad labāk to izmantot pm.statisks + liels cipars pm.max_requests.

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 ab. Ja PHP-FPM procesi atrodas atmiņā, veiktspēja palielinās uz atmiņas patēriņa rēķina, kur tie sēž un gaida. Atrodiet sev labāko variantu.

PHP-FPM iestatÄ«Å”ana: izmantojiet pm static, lai nodroÅ”inātu maksimālu veiktspēju

Avots: www.habr.com

Pievieno komentāru