Sazkirina PHP-FPM: Ji bo performansa herî zêde pm statîk bikar bînin

Sazkirina PHP-FPM: Ji bo performansa herî zêde pm statîk bikar bînin

Guhertoyek neguherbar a vê gotarê di destpêkê de li ser hate weşandin haydenjames.io û bi destûra wê li vir hatiye weşandin nivîskar.

Ez ê bi kurtasî ji we re vebêjim ka meriv çawa çêtirîn PHP-FPM mîheng bike da ku karûbarê zêde bike, derengmayînê kêm bike û CPU û bîranînê bi domdarî bikar bîne. Bi xwerû, rêza PM (rêveberê pêvajoyê) di PHP-FPM de ye dînamîk, û heke têra bîra we tune be, wê hingê çêtir e ku hûn saz bikin ondemand. Ka em 2 vebijarkên kontrolê li ser bingeha belgeya php.net bidin ber hev û bibînin ka bijareya min ji wan çawa cûda dibe Static pm ji bo seyrûsefera bilind:

pm = dînamîk - Hejmara pêvajoyên zarokan bi dînamîk li ser bingeha rêwerzên jêrîn têne mîheng kirin: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = daxwaz - Pêvajoyên li ser daxwazê ​​têne afirandin (li hember afirandina dînamîk, dema ku pm.start_servers têne destpêkirin dema ku karûbar dest pê dike).
pm = statîk - Hejmara pêvajoyên zarokan sabît e û ji hêla pîvanê ve tê destnîşan kirin pm.max_children.

Ji bo hûrguliyan, binêre navnîşa bêkêmasî ya rêwerzên gerdûnî php-fpm.conf.

Wekheviyên di navbera rêveberê pêvajoyê PHP-FPM û kontrolkerê frekansa CPU de

Dibe ku ev yek ji mijarê xuya bike, lê ez ê vê yekê bi mijara veavakirina PHP-FPM ve girêbidim. Yê ku bi kêmî ve carekê kêmbûna pêvajoyê neceribandiye - li ser laptop, makîneya virtual an serverek taybetî. Pîvana frekansa CPU bi bîr tîne? Ev vebijêrk ji bo hene nix û Windows dikarin bi guheztina mîhenga tîrêjê ya pêvajoyê ji performansa pergalê û bersivdanê çêtir bikin ondemand li ser birêvebirinî*. Vê carê em danasînan bidin ber hev û li wekheviyan binêrin:

walî = daxwaz - Pîvana dînamîkî ya frekansa pêvajoyê li gorî barkirina heyî. Bi lez davêje ser frekansa herî zêde û dûv re her ku demên bêçalaktiyê zêde dibin wê kêm dike.
walî=muhafezekar= pîvana frekansa dînamîkî li gorî barkirina heyî. Frekansê ji daxwazê ​​hêsantir zêde dike û kêm dike.
Walî = performansa - frekansa her gav herî zêde ye.

Ji bo hûrguliyan, binêre lîsteya tam a parametreyên regulator frequency processor.

Wekheviyan dibînin? Min xwest ez vê berhevdanê nîşan bidim da ku we qanih bikim ku ew çêtirîn e ku meriv bikar bîne pm statîk ji bo PHP-FPM.

Ji bo pîvana rêzkerê pêvajoyê birêvebirinî ji bo zêdekirina bi ewlehî performansê dibe alîkar ji ber ku ew hema hema bi tevahî bi sînorê CPU ya serverê ve girêdayî ye. Digel vê yekê, bê guman, faktorên wekî germahî, barkirina batterê (di laptopek de) û bandorên din ên aliyî yên ku bi berdewamî pêvajo bi 100% dimeşîne jî hene. Mîhenga performansê performansa pêvajoyê ya herî bilez peyda dike. Ji bo nimûne, bixwînin Parametreya force_turbo di Raspberry Pi debi kîjan panelê RPi dê regulator bikar bîne birêvebirinî, li cihê ku çêtirbûna performansê dê ji ber kêm leza demjimêra CPU-yê bêtir diyar bibe.

Bikaranîna pm statîk ji bo bidestxistina performansa serverê ya herî zêde

Vebijêrk PHP-FPM pm statîk bi piranî bi bîranîna belaş a li ser serverê ve girêdayî ye. Heke bîranîn kêm e, çêtir e ku meriv hilbijêrin ondemand an dînamîk. Ji hêla din ve, heke bîranîna we hebe, hûn dikarin bi danîna pm-ê ji serê rêveberê pêvajoya PHP-ê dûr bixin Static kapasîteya serverê ya herî zêde. Bi gotinek din, heke her tişt baş were hesibandin, hûn hewce ne ku saz bikin pm.statîk bi qebareya herî zêde ya pêvajoyên PHP-FPM yên ku dikarin werin darve kirin, bêyî ku pirsgirêkan bi bîra kêm an cache re çêbikin. Lê ne ew qas bilind e ku ew pêvajokeran dişewitîne û komek operasyonên PHP-FPM li benda darvekirinê kom dike..

Sazkirina PHP-FPM: Ji bo performansa herî zêde pm statîk bikar bînin

Di dîmena jorîn de, server heye pm = statîk û pm.max_children = 100, û ev bi qasî 10 GB ji 32-yên berdest digire. Bala xwe bidin stûnên ronîkirî, li vir her tişt zelal e. Di vê dîmenê de bi qasî 200 bikarhênerên çalak (ji 60 çirkeyan zêdetir) di Google Analytics de hebûn. Di vê astê de, bi qasî 70% ji pêvajoyên zarokan ên PHP-FPM hîn jî bêkar in. Ev tê vê wateyê ku PHP-FPM her gav li gorî seyrûsefera heyî ya herî zêde ya çavkaniyên serverê tête danîn. Pêvajoyek bêkar li benda lûtkeyên trafîkê ye û tavilê bersivê dide. Hûn ne hewce ne ku li bendê bimînin pm dê pêvajoyên zarokan biafirîne û dûv re dema ku heyam qediya wan biqedîne pm.process_idle_timeout. Min nirxa pir bilind danî pm.max_requestsji ber ku ev serverek xebitî ye ku di PHP-ê de bîranîn tune. Hûn dikarin saz bikin pm.max_requests = 0 bi statîk heke hûn ji nivîsarên PHP yên heyî û pêşerojê bi tevahî pê ewle ne. Lê çêtir e ku meriv bi demê re senaryoyan dubare bike. Hejmarek mezin daxwazan bicîh bikin, ji ber ku em dixwazin ji lêçûnên pm-ê yên nehewce dûr bixin. Ji bo nimûne, bi kêmanî pm.max_requests = 1000 - li gorî mîqdarê pm.max_children û hejmara daxwazên per second.

Dîmenê fermanê nîşan dide Linux top, ji hêla u (bikarhêner) û navê bikarhêner PHP-FPM ve hatî fîlter kirin. Tenê 50 an jî pêvajoyên pêşîn têne xuyang kirin (min tam jimartin), lê bi eslê xwe jorîn statîstîkên jorîn ên ku di pencereya termînalê de cih digirin nîşan dide. Di vê rewşê de ji hêla % CPU (%CPU) ve hatî rêz kirin. Ji bo dîtina hemî 100 pêvajoyên PHP-FPM, fermanê bişopînin:

top -bn1 | grep php-fpm

Dema ku meriv pm ondemand û dînamîk bikar bîne

Ger hûn pm bikar bînin dînamîk, xeletiyên bi vî rengî çêdibin:

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

Biceribînin ku pîvanê biguhezînin, xeletî dê neçe, mîna di vê postê de li ser Serverfault diyar kir. Di vê rewşê de, nirxa pm.min pir piçûk bû, û ji ber ku seyrûsefera webê ew qas diguhere û lûtkeyên bilind û newalên kûr hene, dijwar e ku meriv pm bi têra xwe rast bike. dînamîk. Bi gelemperî pm tê bikar anîn ondemand, wek ku di heman postê de şîret kirin. Lê ev hê xerabtir e, ji ber ondemand dema ku seyrûseferek hindik be an tune be, pêvajoyên bêkar diqedîne, û hûn ê dîsa jî bi giraniya guherîna seyrûseferê biqedin. Heya ku, bê guman, we demek bendewariyek mezin diyar neke. Û paşê ew çêtir e ku bikar bînin pm.statîk + hejmara bilind pm.max_requests.

PM dînamîk û bi taybetî ondemand heke we gelek hewzên PHP-FPM hebin dibe ku bi kêr were. Mînakî, hûn gelek hesabên cPanel an gelek malperan li hewzên cihêreng mêvandar dikin. Ez serverek bi, bêje, 100+ hesabên cpanel û bi qasî 200 domainan heye, û pm.static an jî dînamîkî dê min xilas neke. Tiştê ku hûn li vir hewce ne ondemand, jixwe, ji sê sêyan zêdetir malperan seyrûseferek hindik distînin, û bi ondemand dê hemî pêvajoyên zarokê hilweşin, ku dê gelek bîranîna me xilas bike! Xweşbextane, pêşdebirên cPanel vê yekê ferq kirin û nirxê xwerû destnîşan kirin ondemand. Berê, dema ku standard bû dînamîk, PHP-FPM ji bo pêşkêşkerên parvekirî yên mijûl qet ne guncaw bû. Gelek bikar anîne suPHP, ji ber ku pm dînamîk Tewra bi hewzên bêkar û hesabên cPanel PHP-FPM re bîranîn vedixwe. Bi îhtîmalek mezin, heke seyrûsefer baş be, hûn ê li ser serverek bi hejmareke mezin hewzên PHP-FPM (mêvandariya hevbeş) neyên mêvandar kirin.

encamê

Heke hûn PHP-FPM bikar tînin û seyrûsefera we giran e, rêveberên pêvajoyê ondemand и dînamîk ji bo PHP-FPM dê ji ber sermaya wan ya cewherî berbi sînorkirî be. Pergala xwe fam bikin û pêvajoyên PHP-FPM-ê li gorî kapasîteya herî zêde ya serverê mîheng bikin. Yekem set pm.max_children girêdayî herî zêde bikaranîna pm dînamîk an ondemand, û dûv re vê nirxê zêde bike heya astekê ku bîranîn û pêvajo bêyî barkirin kar bikin. Hûn ê bi wê yekê bibînin pm statîk, ji ber ku di bîra we de her tişt heye, lûleyên trafîkê dê bi demê re bibe sedema kêm çîpên CPU-yê, û navînî barkirina server û CPU-ê dê biqede. Mezinahiya pêvajoyê ya navînî ya PHP-FPM bi servera malperê ve girêdayî ye û veavakirina destan hewce dike, ji ber vê yekê bêtir rêveberên pêvajoyê yên otomatîk in. dînamîk и ondemand - bêtir populer. Ez hêvî dikim ku gotara kêrhatî bû.

DUP Nexşeya pîvanê hate zêdekirin ab. Ger pêvajoyên PHP-FPM di bîranînê de bin, performansa li ser xerckirina bîranînê li cîhê ku rûniştin û li bendê ne zêde dibe. Ji bo xwe vebijarka çêtirîn bibînin.

Sazkirina PHP-FPM: Ji bo performansa herî zêde pm statîk bikar bînin

Source: www.habr.com

Add a comment