Yon vèsyon ki pa modifye nan atik sa a te orijinal pibliye sou
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
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
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
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..
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
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
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
Sous: www.habr.com