Isalathiso senqaku
Inani labasebenzisi abasetyenziswa ngaxeshanye iseva enokubaphatha alixhomekekanga ekubeni ingakanani na i-cores enayo, kodwa lixhomekeke ekubeni ingakanani imemori esetyenziswa yinkqubo nganye.
Le ngxelo isenokuvakala ngathi iyacaphukisa, kodwa yeyona nto ibuhlungu kakhulu kwishishini lemisebenzi nolondolozo.
Kutheni inkumbulo ingundoqo?
Abantu abaninzi babona i-VPS ene-CPU eyi-8-core kunye ne-24GB yememori kwaye ngokungazi bacinga ukuba banokusebenzisa ngokulula amakhulu eenkqubo ze-PHP-FPM.
Nangona kunjalo, enyanisweni, ukusetyenziswa kwememori ye-RSS kwinkqubo enye ye-PHP kudla ngokuba phezulu njenge-200MB.
Esi sisiphumo esifunyenwe ngovavanyo lokwenyani ngomgca womyalelo:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
Kwi -HestiaCP 's complex framework kunye ne-multi-plugins environment, ingakumbi ngaphandle kokulungiswa kwe-OPcache, i-200MB yinto eqhelekileyo.
Oku kuthetha ukuba imemori, hayi i-CPU, ngumda onzima omisela ubuninzi be-concurrency.

Ifayile yoqwalaselo ecetyiswayo (php-fpm.conf)
pm = dynamic
pm.max_children = 80
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 24
pm.max_requests = 500
pm.process_idle_timeout = 10s
request_terminate_timeout = 60s
Ingqiqo yokubala iparameter kunye nesiseko sokuseta
| Iiparamitha zoqwalaselo | Ixabiso lokuseta | Ubalo oluphambili kunye nesiseko sokuseta |
|---|---|---|
| pm | dynamic | Imo ye-dynamic ivumela ukongezwa okanye ukususwa kweenkqubo ngokusekwe kwiimfuno ze-concurrency, ukulinganisela isantya sempendulo kunye nokusetyenziswa kwememori. |
| pm.max_abantwana | 80 | Imemori iyonke eyi-24GB ngaphandle kwe-kernel yenkqubo kunye MySQL/RedisEmva kweNginx, kushiyeke malunga ne-16GB kwi-PHP.16,384 MB / 200 MB ≈ 81.9Ukuyibeka kwi-80 kunokususa ngokupheleleyo i-OOM (Out of Memory) ngexesha lokuvumelana okuphezulu. |
| iiseva ze-pm.start_servers | 16 | Ukufudumeza xa uqalisa kumiselwe kabini inani lee-CPU cores (ii-cores ezi-8 × 2 = 16) ukuqinisekisa ukuba inkonzo inokusingatha ngoko nangoko i-basic concurrency emva kokuqalisa kwakhona. |
| iiseva ze-pm.min_spare | 8 | Misela inani le-core ye-CPU kwii-cores ezi-8 ukuqinisekisa ukuba izicelo ezintsha zinokuphendulwa nangaliphi na ixesha ngexesha le-traffic ephantsi. |
| iiseva_ze-pm.max_spare_servers | 24 | Yibeke ibe yi-3 ngokuphindwe kathathu inani lee-CPU cores (ii-8 cores × 3 = 24) ukuze ugcine inani eliphakathi leenkqubo emva kokuba ithrafikhi ihlile, ukuze ikwazi ukujongana nokuguquguquka okuncinci. |
| pm.max_requests | 500 | Ukuba inkqubo enye ifikelela kwisiseko esikhulu se-200MB, ukunciphisa inani lezicelo ukuya kwi-500 ngaphambi kokuba kutshatyalaliswe kwaye kwakhiwe kwakhona kunokucoca ukuvuza kwememori engacacanga ngokukhawuleza. |
| pm.process_idle_timeout | 10s | 超出 min_spare_servers Iinkqubo ezingasebenziyo zikhutshwa ngokuzenzekelayo kwaye zibuyiselwe kwimemori yenkqubo emva kwemizuzwana eli-10 kungekho zicelo. |
Iingcebiso zokuxhasa ezibalulekileyo kunye nokuphucula
1. Indlela yokulwa ne-hangover yexesha elide
request_terminate_timeout = 60s Yiloo nto ibalulekileyo.
Ingaphelisa ngenkani iinkqubo ezibambekileyo ngenxa yokungafikeleli kwesiseko sedatha okanye ukuvalwa kwe-API yomntu wesithathu.
Okwangoku, iNginx's fastcgi_read_timeout Kufuneka igcinwe ubuncinane imizuzwana engama-60, kungenjalo umthengi uza kuyifumana ngaphambi kwexesha. 504 Gateway Timeout,
2. Amaqhinga okoyisa iingxaki zokukhumbula
Ubuninzi beenkqubo ezihambelanayo ezingama-80 kuthetha ukuba phantsi kweemeko eziqatha ze-concurrency, inkqubo inokusingatha ubuninzi bezicelo ze-HTTP ezingama-80 ngaxeshanye.
Ukuba ufuna ukuphucula ngakumbi umthamo, ingqwalasela mayibe kukunciphisa ukusetyenziswa kwememori ngenkqubo nganye.
- Vula i-OPcache: ngaphakathi
php.iniUqwalaselo oluPhakathiopcache.enable=1Kwayeopcache.memory_consumption=256Ukugcinwa kwe-Bytecode caching kunokunciphisa ukusetyenziswa kwememori kwenkqubo enye ukusuka kwi-200MB ukuya kwi-60 ~ 100MB. - Ulawulo olufanelekileyo lwe-memory_limit: 将
php.iniphakathimemory_limitKulinganiselwe kwi128MOkanye256MUkuthintela izikripthi ezingaqhelekanga zomntu ngamnyemdaIdla inkumbulo eninzi.
Nje ukuba ukusetyenziswa kwememori kwenkqubo enye kwehle ukuya kwi-100MB...pm.max_children Ingahlaziywa ngokukhuselekileyo ibe 150 Ukongeza, amandla okusebenzisa imali efanayo aphantse aphindwe kabini.
Iimbono ezigunyazisiweyo zikhankanyiweyo
Ngokweengcebiso ezikuxwebhu olusemthethweni lweNginx :
"Izicelo zeFastCGI kufuneka zihlale zijongiwe ngemiyalelo yexesha lokuphelelwa lixesha ukuthintela ukudinwa kwezixhobo."
(Umthombo: Amaxwebhu eNginx)
Incwadi esemthethweni ye-PHP ithi ngokucacileyo:
"pm.max_children ichaza inani eliphezulu leenkqubo zomntwana eziza kwenziwa. Le yeyona miyalelo ibalulekileyo."
(Umthombo: Uxwebhu lwe-PHP-FPM)
Ezi mbono zinegunya zihambelana ngokugqibeleleyo neendlela zethu zokusebenza, nto leyo ebonisa ukuba ingqiqo yokwenza ngcono ayisekelwanga kumava kuphela, kodwa ikwasekelwe nakwiindlela ezilungileyo ezisemgangathweni.
Isiphelo: Iimbono zam kunye neengcaphuno eziphambili
Kwiimeko apho imali eninzi isetyenziswa, i-CPU yinjini, imemori yitanki yepetroli, kwaye i-PHP-FPM yi-fleet dispatcher.
Nokuba injini inamandla kangakanani na, ukuba itanki yepetroli ayinkulu ngokwaneleyo, inqwelomoya ayizukuhamba mgama ungako.
Iingcali zokwenyani azisebenzisi ngokupheleleyo iiparameters, kodwa zibala ngokuchanekileyo ukusetyenziswa kwememori kwenkqubo nganye ukuze kuthintelwe inkunkuma kunye nokugcwala.
Eyona nto iphambili yokwenza ngcono kukufumana ibhalansi efanelekileyo ngezixhobo ezinqongopheleyo.
Oku akusiyo nje iteknoloji, kodwa kukwayifilosofi.
Ke ngoko, yeka ukukholelwa ukuba "inani lee-cores limisela yonke into." Oyena mmiselo womda we-concurrency kukulawula kwakho imemori.
Thatha inyathelo kwaye uphucule i-VPS yakho ngokupheleleyo, usebenzise lonke ithontsi lenkumbulo.
Ngethemba, inqaku elithi "8-core 24GB VPS iyaphelelwa yimemori? Ukulungiswa okugqithisileyo kwe-PHP-FPM process pool phantsi kweHestiaCP" elabelwana ngalo kwibhlog kaChen Weiliang ( https://www.chenweiliang.com/ ) liya kuba luncedo kuwe.
Zive ukhululekile ukwabelana ngekhonkco leli nqaku: https://www.chenweiliang.com/cwl-34509.html
