8-core 24GB VPS ikutha ntchito? Chitsogozo chothandiza pakusintha kwambiri njira ya PHP-FPM pool ndi HestiaCP

Chiwerengero cha ogwiritsa ntchito omwe seva ingathe kuwagwiritsa ntchito nthawi imodzi sichidalira kuchuluka kwa ma cores omwe ili nawo, koma kuchuluka kwa kukumbukira komwe njira iliyonse imagwiritsa ntchito.

Mawu awa angamveke ngati oyambitsa mavuto, koma ndi nkhani yeniyeni komanso yopweteka kwambiri mumakampani ogwirira ntchito ndi kukonza zinthu.

Nchifukwa chiyani kukumbukira ndi vuto lalikulu?

Anthu ambiri amawona VPS yokhala ndi CPU ya 8-core ndi 24GB ya kukumbukira ndipo mosazindikira amaganiza kuti imatha kuyendetsa mosavuta njira zambiri za PHP-FPM.

Komabe, kwenikweni, kugwiritsa ntchito kukumbukira kwa RSS kwa njira imodzi ya PHP nthawi zambiri kumakhala kokwera kufika pa 200MB.

Izi ndi zotsatira zomwe zapezeka kudzera mu mayeso enieni kudzera mu mzere wa lamulo:

ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'

Mu dongosolo la HestiaCP lovuta komanso malo okhala ndi mapulagini ambiri, makamaka popanda kukonza bwino kwa OPcache, 200MB ndiye chinthu chofala.

Izi zikutanthauza kuti kukumbukira, osati CPU, ndiye malire ovuta omwe amatsimikiza kuchuluka kwa ndalama zomwe zimagwiritsidwa ntchito.

8-core 24GB VPS ikutha ntchito? Chitsogozo chothandiza pakusintha kwambiri njira ya PHP-FPM pool ndi HestiaCP

Fayilo yokonzedwa yokonzedwa (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

Mfundo yowerengera magawo ndi maziko okhazikitsira

Zosintha zosinthaKukhazikitsa mtengoKuwerengera kwapakati ndi maziko okhazikitsira
pmdynamicDynamic mode imalola kuwonjezera kapena kuchotsa njira zotanuka kutengera zomwe zimafunika pa concurrency, kulinganiza liwiro la mayankho ndi kugwiritsa ntchito kukumbukira.
pm.max_children8024GB yonse yosungiramo zinthu kupatula kernel ya dongosolo ndi MySQL/RedisPambuyo pa Nginx, pafupifupi 16GB imatsala ya PHP.16,384 MB / 200 MB ≈ 81.9Kuyika pa 80 kungachotseretu OOM (Out of Memory) panthawi yofanana kwambiri.
ma seva a pm.start16Kutenthetsa nthawi yoyambira kumayikidwa kawiri kuchuluka kwa ma CPU cores (ma 8 cores × 2 = 16) kuti zitsimikizire kuti ntchitoyi ikhoza kugwira ntchito nthawi yomweyo mutayambiranso.
pm.min_spare_servers8Ikani chiwerengero cha ma core a CPU kukhala ma core 8 kuti muwonetsetse kuti zopempha zatsopano zitha kuyankhidwa nthawi iliyonse panthawi yomwe anthu ambiri sakuyenda bwino.
ma seva a pm.max_spare24Ikani kuchulukitsa katatu kuchuluka kwa ma CPU cores (ma 8 cores × 3 = 24) kuti musunge kuchuluka kwa njira zoyendetsera magalimoto pambuyo poti magalimoto achepa, kuti muthane ndi kusinthasintha pang'ono.
pm.max_requests500Ngati njira imodzi ifika pa 200MB, kuchepetsa chiwerengero cha zopempha kufika pa 500 musanawononge ndikumanganso kungayeretsere kutayikira kwa kukumbukira kosabisika mwachangu.
pm.process_idle_timeout10s超出 min_spare_servers Machitidwe osagwira ntchito amatulutsidwa okha ndikubwezeretsedwa ku kukumbukira kwa dongosolo patatha masekondi 10 osapempha.

Zokonzera Zofunikira Zothandizira ndi Malangizo Okonzanso

1. Njira yothanirana ndi vuto la hangover nthawi yayitali

request_terminate_timeout = 60s Ndicho chinsinsi.

Ikhoza kuthetsa mwamphamvu njira zomwe zatsekedwa chifukwa cha kutsekedwa kwa database kapena kutsekedwa kwa API ya chipani chachitatu.

Pakadali pano, Nginx's fastcgi_read_timeout Iyenera kusungidwa kwa masekondi osachepera 60, apo ayi kasitomala adzailandira isanakwane nthawi. 504 Gateway Timeout.

2. Njira zothetsera mavuto okumbukira zinthu

Kuchuluka kwa njira 80 zomwe zimachitika nthawi imodzi kumatanthauza kuti pansi pa mikhalidwe yovuta kwambiri, dongosololi limatha kuthana ndi zopempha za HTTP zosapitirira 80 nthawi imodzi.

Ngati mukufuna kupititsa patsogolo mphamvu, cholinga chanu chikhale kuchepetsa kugwiritsa ntchito kukumbukira pa ndondomeko iliyonse.

  • Yambitsani OPcache: mu php.ini Kapangidwe kapakati opcache.enable=1 ndi opcache.memory_consumption=256Kusunga ma code a Bytecode kungachepetse kugwiritsa ntchito kukumbukira kwa njira imodzi kuchokera pa 200MB mpaka 60 ~ 100MB.
  • Kulamulira bwino kwa memory_limit: 将 php.ini pakati memory_limit Zochepa kwa 128M Kapena 256MKupewa zolemba zachilendo za munthu aliyense payekhazopanda malireZimadya kukumbukira kwambiri.

Kugwiritsa ntchito kukumbukira kwa njira imodzi kukatsika kufika pa 100MB ...pm.max_children Ikhoza kusinthidwa bwino kuti 150 Kuphatikiza apo, mphamvu ya ndalama zofanana yawonjezeka kawiri.

Malingaliro odalirika omwe atchulidwa

Malinga ndi malangizo omwe ali mu zolemba zovomerezeka za Nginx :

"Mapulogalamu a FastCGI ayenera kuyang'aniridwa nthawi zonse ndi malangizo oti nthawi ichedwe kuti asathe kugwiritsa ntchito zinthu."
(Chitsime: Nginx Docs)

Buku lovomerezeka la PHP limanena momveka bwino kuti:

"pm.max_children imafotokoza chiwerengero chachikulu cha njira za ana zomwe ziyenera kupangidwa. Ili ndiye lamulo lofunika kwambiri."
(Chitsime: Zolemba za PHP-FPM)

Malingaliro odalirika awa akugwirizana bwino ndi machitidwe athu, kutsimikizira kuti malingaliro okonza zinthu samangotengera zomwe takumana nazo, komanso machitidwe abwino okhazikika.

Mapeto: Malingaliro Anga ndi Mawu Ofunika

Muzochitika za ndalama zambiri, CPU ndi injini, kukumbukira ndi thanki yamafuta, ndipo PHP-FPM ndi yotumiza magalimoto.

Kaya injiniyo ili ndi mphamvu bwanji, ngati thanki yamafuta si yayikulu mokwanira, galimoto ya magalimoto siipita patali kwambiri.

Akatswiri enieni sagwiritsa ntchito molakwika magawo onse, koma amawerengera molondola momwe zinthu zimagwiritsidwira ntchito kukumbukira kuti apewe kuwononga ndi kusefukira.

Chofunika kwambiri pa kukonza bwino zinthu ndikupeza njira yabwino kwambiri yogwiritsira ntchito zinthu zochepa.

Iyi si ukadaulo wokha, komanso nzeru.

Chifukwa chake, siyani kukhulupirira kuti "chiwerengero cha ma cores ndicho chimatsimikiza chilichonse." Chomwe chimatsimikizira malire a concurrency ndi ulamuliro wanu pa kukumbukira.

Chitanipo kanthu ndikuwongolera VPS yanu mokwanira, pogwiritsa ntchito bwino dontho lililonse la kukumbukira.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Pitani pamwamba