PHP-FPM konfigirasyon: sèvi ak pm estatik pou pèfòmans maksimòm

PHP-FPM konfigirasyon: sèvi ak pm estatik pou pèfòmans maksimòm

Yon vèsyon ki pa modifye nan atik sa a te orijinal pibliye sou haydenjames.io epi pibliye isit la avèk pèmisyon li otè a.

Mwen pral di ou nan yon bref ki jan pi bon yo konfigirasyon PHP-FPM ogmante debi, diminye latansi, epi sèvi ak CPU ak memwa pi konsistan. Pa default, liy PM (manadjè pwosesis) nan PHP-FPM se dinamik, epi si ou pa gen ase memwa, Lè sa a, li se pi bon enstale ondemand. Ann konpare 2 opsyon kontwòl ki baze sou dokiman an php.net epi wè ki jan pi renmen mwen an diferan de yo estatik pm pou trafik gwo volim:

pm = dinamik — kantite pwosesis timoun yo konfigirasyon dinamik dapre direktiv sa yo: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = mande - pwosesis yo kreye sou demann (kontrèman ak kreyasyon dinamik, lè pm.start_servers yo te lanse lè sèvis la kòmanse).
pm = estatik — kantite pwosesis timoun yo fiks epi yo endike pa paramèt la pm.max_children.

Pou plis detay, gade lis konplè direktiv mondyal php-fpm.conf.

Resanblans ant manadjè pwosesis PHP-FPM ak kontwolè frekans CPU a

Sa a ka sanble offtopic, men mwen pral konekte sa a nan sijè a nan PHP-FPM konfigirasyon. Ki moun ki pa te fè eksperyans yon ralentissement processeur omwen yon fwa - sou yon laptop, machin vityèl oswa sèvè dedye. Sonje dekale frekans CPU? Opsyon sa yo disponib pou nix ak Windows ka amelyore pèfòmans sistèm ak repons lè yo chanje paramèt gaz processeur la ondemand sou pèfòmans*. Fwa sa a, ann konpare deskripsyon yo epi gade resanblans yo:

gouvènè=ondemand — Eskalad dinamik frekans processeur depann sou chaj aktyèl la. Rapidman sote nan frekans maksimòm ak Lè sa a, diminye li kòm peryòd inaktivite ogmante.
gouvènè=konsèvatè= echèl frekans dinamik depann sou chaj aktyèl la. Ogmante ak diminye frekans pi byen pase sou demann.
Gouvènè = pèfòmans - frekans toujou maksimòm.

Pou plis detay, gade lis konplè paramèt regilatè frekans processeur.

Wè resanblans yo? Mwen te vle montre konparezon sa a pou konvenk ou ke li pi bon pou itilize pm estatik pou PHP-FPM.

Pou paramèt regilatè processeur a pèfòmans ede ogmante pèfòmans san danje paske li se prèske antyèman depann sou limit CPU sèvè a. Anplis de sa, nan kou, gen tou faktè tankou tanperati, chaj batri (nan yon laptop) ak lòt efè segondè nan toujou ap kouri processeur a nan 100%. Anviwònman pèfòmans asire pèfòmans processeur ki pi rapid la. Li, pou egzanp, sou force_turbo paramèt nan Franbwaz Pi, ak ki panèl RPi a pral sèvi ak regilatè a pèfòmans, kote amelyorasyon nan pèfòmans yo pral pi aparan akòz vitès la revèy CPU ki ba.

Sèvi ak pm static pou reyalize maksimòm pèfòmans sèvè

PHP-FPM opsyon pm estatik lajman depann sou memwa a gratis sou sèvè a. Si memwa ba, li pi bon pou w chwazi ondemand oswa dinamik. Nan lòt men an, si ou gen memwa, ou ka evite manadjè pwosesis PHP anlè pa mete pm estatik nan kapasite maksimòm sèvè a. Nan lòt mo, si tout bagay byen kalkile, ou bezwen etabli pm.estatik nan volim maksimòm pwosesis PHP-FPM ki ka egzekite, san yo pa kreye pwoblèm ak memwa ki ba oswa kachèt. Men, pa tèlman wo ke li akable processeurs yo ak akimile yon pakèt operasyon PHP-FPM ap tann yo dwe egzekite..

PHP-FPM konfigirasyon: sèvi ak pm estatik pou pèfòmans maksimòm

Nan Ekran ki pi wo a, sèvè a genyen pm = estatik ak pm.max_children = 100, ak sa a pran apeprè 10 GB soti nan 32 ki disponib. Peye atansyon sou kolòn yo make, tout bagay klè isit la. Nan Ekran sa a te gen apeprè 200 itilizatè aktif (plis pase 60 segonn) nan Google Analytics. Nan nivo sa a, apeprè 70% nan pwosesis timoun PHP-FPM yo toujou san fè anyen konsa. Sa vle di PHP-FPM toujou mete sou kantite maksimòm resous sèvè kèlkeswa trafik aktyèl la. Yon pwosesis san fè anyen konsa tann pik trafik epi li reponn imedyatman. Ou pa bezwen tann jiskaske pm pral kreye pwosesis timoun ak Lè sa a, mete fen nan yo lè peryòd la ekspire pm.process_idle_timeout. Mwen mete valè a trè wo pm.max_requestspaske sa a se yon sèvè k ap travay ki pa gen okenn fwit memwa nan PHP. Ou ka enstale pm.max_requests = 0 ak estatik si ou konplètman konfyans nan script PHP ki deja egziste ak nan lavni. Men, li pi bon pou reexécuter scripts yo sou tan. Mete yon gwo kantite demann, paske nou vle evite depans pm ki pa nesesè. Pou egzanp, omwen pm.max_requests = 1000 - depann sou kantite pm.max_children ak kantite demann pou chak segonn.

Ekran an montre kòmandman an Linux tèt, filtre pa u (itilizatè) ak non itilizatè PHP-FPM. Se sèlman 50 premye oswa konsa pwosesis yo montre (mwen pa t 'konte egzakteman), men esansyèlman tèt montre estatistik yo ki an tèt ki anfòm nan fenèt la tèminal. Nan ka sa a klase pa % CPU (% CPU). Pou wè tout 100 pwosesis PHP-FPM, kouri lòd la:

top -bn1 | grep php-fpm

Lè yo sèvi ak pm sou demann ak dinamik

Si w itilize pm dinamik, erè tankou sa a rive:

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

Eseye chanje paramèt la, erè a pa pral ale, tankou dekri nan pòs sa a sou Serverfault. Nan ka sa a, valè pm.min la te twò piti, epi kòm trafik entènèt varye anpil epi li gen gwo pik ak fon fon, li difisil pou byen ajiste pm. dinamik. Anjeneral yo itilize pm ondemand, jan yo konseye nan menm pòs la. Men, sa a se menm pi mal, paske ondemand mete fen nan pwosesis san fè anyen konsa a zewo lè gen ti kras oswa pa gen trafik, epi w ap toujou fini ak anlè a nan chanje trafik. Sòf si, nan kou, ou fikse yon tan datant gwo. Lè sa a, li pi bon pou itilize pm.estatik + nimewo segondè pm.max_requests.

PM dinamik e sitou ondemand ka itil si ou gen plizyè pisin PHP-FPM. Pou egzanp, ou òganize plizyè kont cPanel oswa plizyè sit entènèt nan pisin diferan. Mwen gen yon sèvè ak, di, 100+ kont cpanel ak anviwon 200 domèn, ak pm.static oswa menm dinamik pa ta sove m '. Tout sa ou bezwen isit la se ondemand, Apre yo tout, plis pase de tyè nan sit entènèt resevwa ti kras oswa pa gen okenn trafik, ak ak ondemand tout pwosesis timoun yo pral tonbe, ki pral sove nou anpil memwa! Erezman, devlopè cPanel yo remake sa a epi yo mete valè a default ondemand. Précédemment, lè default la te dinamik, PHP-FPM pa t 'apwopriye pou okipe sèvè pataje ditou. Anpil te itilize suPHP, paske pm dinamik memwa konsome menm avèk pisin san fè anyen konsa ak kont cPanel PHP-FPM. Gen plis chans, si trafik la bon, ou pa pral anime sou yon sèvè ak yon gwo kantite PHP-FPM pisin (hosting pataje).

Konklizyon

Si w ap itilize PHP-FPM epi trafik ou a lou, manadjè pwosesis yo ondemand и dinamik pou PHP-FPM yo pral limite debi akòz anlè nannan yo. Konprann sistèm ou a ak konfigirasyon pwosesis PHP-FPM selon kapasite maksimòm sèvè a. Premye seri pm.max_children depann sou itilizasyon maksimòm pm dinamik oswa ondemand, ak Lè sa a, ogmante valè sa a nan yon nivo kote memwa a ak processeur ap travay san yo pa twò chaje. Ou pral remake sa ak pm estatik, Piske ou gen tout bagay nan memwa, Spikes trafik yo pral lakòz mwens CPU Spikes sou tan, ak mwayèn chaj sèvè ak CPU pral nivo. Gwosè an mwayèn PHP-FPM pwosesis depann sou sèvè entènèt la epi li mande pou konfigirasyon manyèl, kidonk plis manadjè pwosesis otomatik yo dinamik и ondemand - pi popilè. Mwen espere atik la te itil.

DUP Te ajoute tablo referans ab. Si pwosesis PHP-FPM yo nan memwa, pèfòmans ogmante nan depans lan nan konsomasyon memwa kote yo chita epi tann. Jwenn pi bon opsyon pou tèt ou.

PHP-FPM konfigirasyon: sèvi ak pm estatik pou pèfòmans maksimòm

Sous: www.habr.com

Add nouvo kòmantè