Eolaire Eolaire
Ní bhraitheann líon na n-úsáideoirí comhuaineacha is féidir le freastalaí a láimhseáil ar cé mhéad croíleacán atá ann, ach ar an méid cuimhne a ídíonn gach próiseas.
B’fhéidir go bhfuil an ráiteas seo cosúil le gríosú, ach is í an taithí is réadúla agus is pianmhaire i dtionscal na n-oibríochtaí agus na cothabhála í.
Cén fáth gurb é an chuimhne an príomh-bhac?
Feiceann go leor daoine VPS le LAP 8-chroí agus 24GB de chuimhne agus smaoiníonn siad go fo-chomhfhiosach gur féidir leo na céadta próiseas PHP-FPM a rith go héasca.
Mar sin féin, i ndáiríre, is minic a bhíonn úsáid chuimhne RSS phróiseas PHP aonair chomh hard le 200MB.
Seo an toradh a fuarthas trí thástáil iarbhír tríd an líne ordaithe:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
I gcreat casta agus i dtimpeallacht il-bhreiseán HestiaCP, go háirithe gan optamú OPcache, is é 200MB an norm.
Ciallaíonn sé seo gurb é an chuimhne, ní an LAP, an teorainn chrua a chinneann an comhthráthacht uasta.

Comhad cumraíochta molta (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
Loighic ríomha paraiméadair agus bunús socraithe
| Paraiméadair chumraíochta | Luach a shocrú | Bunús ríomh agus socraithe croí |
|---|---|---|
| pm | dynamic | Ceadaíonn mód dinimiciúil cur leis nó scriosadh leaisteach próiseas bunaithe ar riachtanais chomhthráthachta, ag cothromú luas freagartha agus úsáid cuimhne. |
| pm.max_páistí | 80 | 24GB cuimhne san iomlán lúide croíleacán an chórais agus MySQL/RedisTar éis Nginx, tá thart ar 16GB fágtha do PHP.16,384 MB / 200 MB ≈ 81.9Is féidir OOM (As Cuimhne) a dhíchur go hiomlán le linn comhthráthachta arda trí é a shocrú go 80. |
| freastalaithe_tús_pm | 16 | Socraítear réamhthéamh ag an am tosaithe go dhá oiread líon na gcroí-lárnán LAP (8 gcroí × 2 = 16) lena chinntiú gur féidir leis an tseirbhís comhthráthacht bhunúsach a láimhseáil láithreach tar éis atosaithe. |
| freastalaithe_spártha_pm.min | 8 | Socraigh líon chroílár an LAP go 8 gcroílár lena chinntiú gur féidir freagairt d’iarratais nua ag am ar bith le linn tréimhsí íseal tráchta. |
| freastalaithe_spártha_pm.max | 24 | Socraigh é go 3 oiread líon na gcroí-lárnach LAP (8 gcroí × 3 = 24) chun líon measartha próiseas a choinneáil tar éis don trácht dul i laghad, d’fhonn déileáil le luaineachtaí beaga. |
| pm.max_iarratais | 500 | Má shroicheann próiseas aonair bonn mór de 200MB, scriosfar agus atógáilfear an próiseas má laghdaítear líon na n-iarratas go 500, rud a fhéadann sceitheanna cuimhne intuigthe a ghlanadh níos tapúla. |
| pm.process_idle_timeout | 10s | Ag dul thar min_spare_servers Scaoiltear próisis dhíomhaoin go huathoibríoch agus cuirtear ar ais chuig cuimhne an chórais iad tar éis 10 soicind gan aon iarratais. |
Socruithe Tacaíochta Riachtanacha agus Moltaí Optamaithe
1. Sásra frith-phóite ama scoir
request_terminate_timeout = 60s Sin í an eochair.
Is féidir leis próisis atá sáinnithe mar gheall ar sháithiú bunachar sonraí nó blocáil API tríú páirtí a fhoirceannadh go foréigneach.
Idir an dá linn, Nginx fastcgi_read_timeout Caithfear é a choinneáil ar feadh 60 soicind ar a laghad, nó gheobhaidh an cliant é roimh am. 504 Gateway Timeout.
2. Straitéisí chun bacainní cuimhne a shárú
Ciallaíonn uasmhéid de 80 próiseas comhthráthach gur féidir leis an gcóras uasmhéid de 80 iarratas HTTP dinimiciúil a láimhseáil ag an am céanna faoi dhálaí comhthráthachta foircneacha.
Más mian leat an cumas a fheabhsú tuilleadh, ba cheart an fócas a bheith ar an úsáid cuimhne in aghaidh an phróisis a laghdú.
- Cumasaigh OPcache:ann
php.iniCumraíocht mheánachopcache.enable=1及opcache.memory_consumption=256Is féidir le taisceadh bytecode úsáid cuimhne próisis aonair a laghdú ó 200MB go 60~100MB. - Rialú réasúnta ar theorainn_chuimhneUacht
php.inilármemory_limitTeoranta do128MNó256MChun scripteanna neamhghnácha aonair a choscneamhtheorantaÍdíonn sé go leor cuimhne.
Nuair a thiteann úsáid cuimhne próisis aonair go 100MB...pm.max_children Is féidir é a uasghrádú go sábháilte 150 Ina theannta sin, tá an cumas comhthráthachta beagnach dúbailte.
Dearcthaí údarásacha a luadh
De réir na moltaí sa doiciméadacht oifigiúil Nginx :
"Ba chóir treoracha ama scoir a úsáid i gcónaí chun ídiú acmhainní a chosc ar fheidhmchláir FastCGI."
(Foinse: Doiciméid Nginx)
Deir lámhleabhar oifigiúil PHP go soiléir:
"Sainmhíníonn pm.max_children an líon uasta próiseas linbh atá le cruthú. Seo an treoir is tábhachtaí."
(Foinse: Doiciméadú PHP-FPM)
Tá na tuairimí údarásacha seo ailínithe go foirfe lenár gcleachtais, rud a chruthaíonn nach bhfuil loighic optamaithe bunaithe ar thaithí amháin, ach ar chleachtais chaighdeánaithe is fearr freisin.
Conclúid: Mo Thuairimí agus Príomhluacha
I gcásanna ard-chomhthráthachta, is é an LAP an t-inneall, is é an chuimhne an umar breosla, agus is é PHP-FPM an seoltóir cabhlaigh.
Is cuma cé chomh cumhachtach is atá an t-inneall, mura bhfuil an umar breosla mór go leor, ní rachaidh an conbhua rófhada.
Ní dhéanann fíor-shaineolaithe na paraiméadair a uasmhéadú go dall, ach ina ionad sin ríomhann siad úsáid chuimhne gach próisis go beacht chun dramhaíl agus ró-shreabhadh araon a sheachaint.
Is é croílár an optamaithe an chothromaíocht is fearr a aimsiú le hacmhainní teoranta.
Ní teicneolaíocht amháin atá anseo, ach fealsúnacht freisin.
Dá bhrí sin, stop ag creidiúint go "mbíonn gach rud faoi réir líon na gcroíleacán." Is é an rud a chinneann teorainn na comhthráthachta i ndáiríre ná do smacht ar an gcuimhne.
Glac gníomh agus bain an leas is fearr as do VPS, ag baint an leasa is fearr as gach braon cuimhne.
Tá súil agam go mbeidh an t-alt "8-core 24GB VPS running out of memory? Extreme tuning of PHP-FPM process pool under HestiaCP" a roinneadh ar bhlag Chen Weiliang ( https://www.chenweiliang.com/ ) ina chuidiú duit.
Ná bíodh drogall ort nasc an ailt seo a roinnt: https://www.chenweiliang.com/cwl-34509.html
