Nahutdan na ba og memorya ang 8-core 24GB VPS? Praktikal nga giya sa grabeng pag-tune sa PHP-FPM process pool gamit ang HestiaCP

Ang gidaghanon sa mga dungan nga tiggamit nga madumala sa usa ka server wala magdepende kung pila ka core ang naa niini, apan kung pila ka memorya ang gigamit sa matag proseso.

Kini nga pahayag daw usa ka paghagit, apan kini ang labing tinuod ug labing masakit nga kasinatian sa industriya sa operasyon ug pagmentinar.

Ngano nga ang memorya mao ang pangunang babag?

Daghang mga tawo ang nakakita sa usa ka VPS nga adunay 8-core CPU ug 24GB nga memorya ug wala tuyoa nga naghunahuna nga dali ra nila mapadagan ang gatusan nga mga proseso sa PHP-FPM.

Apan, sa tinuod lang, ang paggamit sa RSS memory sa usa lang ka proseso sa PHP kasagaran moabot sa 200MB.

Kini ang resulta nga nakuha pinaagi sa aktuwal nga pagsulay pinaagi sa command line:

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

Sa komplikado nga framework ug multi-plugin environment sa HestiaCP , labi na kung walay OPcache optimization, 200MB ang naandan.

Kini nagpasabot nga ang memorya, dili ang CPU, mao ang higpit nga limitasyon nga nagtino sa labing taas nga concurrency.

Nahutdan na ba og memorya ang 8-core 24GB VPS? Praktikal nga giya sa grabeng pag-tune sa PHP-FPM process pool gamit ang HestiaCP

Girekomendar nga configuration file (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

Lohika sa pagkalkula sa parameter ug basehan sa setting

Mga parameter sa pag-configurePagtakda og biliAng sukaranan sa pagkalkula ug pag-setup
pmdynamicAng dynamic mode nagtugot sa elastic nga pagdugang o pagtangtang sa mga proseso base sa mga kinahanglanon sa concurrency, pagbalanse sa katulin sa tubag ug paggamit sa memorya.
pm.max_children8024GB nga kinatibuk-ang memorya gawas sa system kernel ug MySQL/RedisHuman sa Nginx, gibana-bana nga 16GB ang nahabilin para sa PHP.16,384 MB / 200 MB ≈ 81.9Ang pagbutang niini sa 80 hingpit nga makatangtang sa OOM (Out of Memory) atol sa taas nga concurrency.
pm.start_servers16Ang preheating sa startup gi-set sa doble sa gidaghanon sa mga CPU core (8 cores × 2 = 16) aron masiguro nga ang serbisyo makadumala dayon sa basic concurrency human sa pag-restart.
pm.min_spare_servers8Ibutang ang ihap sa CPU core ngadto sa 8 ka core aron masiguro nga ang mga bag-ong hangyo matubag bisan unsang orasa atol sa mga panahon nga gamay ang trapiko.
pm.max_spare_servers24Ibutang kini sa 3 ka pilo sa gidaghanon sa mga CPU core (8 ka core × 3 = 24) aron mapadayon ang kasarangan nga gidaghanon sa mga proseso human mohinay ang trapiko, aron madumala ang hinay nga pag-usab-usab.
pm.max_requests500Kon ang usa ka proseso makaabot sa dakong base nga 200MB, ang pagpakunhod sa gidaghanon sa mga hangyo ngadto sa 500 makaguba ug makatukod pag-usab sa proseso, nga mas dali nga makalimpyo sa mga implicit memory leak.
pm.process_idle_timeout10s超出 min_spare_servers Ang mga idle nga proseso awtomatikong gibuhian ug gibalik sa memorya sa sistema pagkahuman sa 10 segundos nga walay mga hangyo.

Mga Kinahanglanong Setting sa Pagsuporta ug mga Suhestiyon sa Pag-optimize

1. Mekanismo sa pag-atras sa hangover sa oras sa pag-undang

request_terminate_timeout = 60s Mao kana ang yawe.

Mahimo niini nga pugson ang pagtapos sa mga proseso nga natanggong tungod sa deadlock sa database o pag-block sa third-party API.

Samtang, ang Nginx fastcgi_read_timeout Kinahanglan kini tipigan sulod sa labing menos 60 segundos, kung dili, madawat kini sa kliyente nga wala sa panahon. 504 Gateway Timeout.

2. Mga estratehiya aron mabuntog ang mga babag sa memorya

Ang maximum nga 80 ka dungan nga proseso nagpasabot nga ubos sa grabeng mga kondisyon sa dungan nga pag-uban, ang sistema makahimo sa pagdumala sa maximum nga 80 ka dinamikong mga hangyo sa HTTP sa dungan nga pag-uban.

Kon gusto nimo nga pauswagon pa ang kapasidad, ang pokus kinahanglan anaa sa pagpakunhod sa paggamit sa memorya kada proseso.

  • I-enable ang OPcache:在 php.ini Medium nga pag-configure opcache.enable=1 ug opcache.memory_consumption=256Ang Bytecode caching makapakunhod sa paggamit sa memorya sa usa ka proseso gikan sa 200MB ngadto sa 60~100MB.
  • Makatarunganon nga pagkontrol sa memory_limit: kabubut-on php.ini tunga-tunga memory_limit Limitado sa 128M o 256MAron malikayan ang indibidwal nga dili normal nga mga scriptwalay kinutubanMakakonsumo kini og daghang memorya.

Sa higayon nga ang paggamit sa memorya sa usa ka proseso moubos ngadto sa 100MB...pm.max_children Mahimo kining luwas nga i-upgrade ngadto sa 150 Dugang pa, ang kapasidad sa dungan nga paggamit niini halos nadoble.

Mga awtoridad nga panglantaw nga gikutlo

Sumala sa mga rekomendasyon sa opisyal nga dokumentasyon sa Nginx :

"Ang mga aplikasyon sa FastCGI kinahanglan kanunay nga bantayan gamit ang mga direktiba sa timeout aron malikayan ang pagkahurot sa mga kahinguhaan."
(Tinubdan: Mga Dokumento sa Nginx)

Klaro nga giingon sa opisyal nga manwal sa PHP :

"Ang pm.max_children nagtino sa pinakataas nga gidaghanon sa mga proseso sa anak nga buhaton. Kini ang pinakaimportante nga direktiba."
(Tinubdan: Dokumentasyon sa PHP-FPM)

Kining mga awtoritatibong panan-aw hingpit nga nahiuyon sa among mga pamaagi, nga nagpamatuod nga ang lohika sa pag-optimize dili lamang gibase sa kasinatian, apan lakip usab sa estandardisadong labing maayong mga pamaagi.

Konklusyon: Ang Akong mga Panglantaw ug Pangunang mga Kinutlo

Sa mga senaryo nga high-concurrency, ang CPU mao ang makina, ang memorya mao ang tangke sa gasolina, ug ang PHP-FPM mao ang fleet dispatcher.

Bisag unsa pa ka kusog ang makina, kon dili igo kadako ang tangke sa gasolina, dili gyud makaabot og layo ang convoy.

Ang tinuod nga mga eksperto dili basta-basta mo-maximize sa mga parameter, apan tukma nga gikalkulo ang paggamit sa memorya sa matag proseso aron malikayan ang pag-usik ug pag-awas.

Ang esensya sa pag-optimize mao ang pagpangita sa labing maayo nga balanse nga adunay limitado nga mga kahinguhaan.

Dili lang kini usa ka teknolohiya, apan usa usab ka pilosopiya.

Busa, hunong na sa pagtuo nga "ang gidaghanon sa mga core ang magtino sa tanan." Ang tinuod nga magtino sa limitasyon sa concurrency mao ang imong kontrol sa memorya.

Lihok ug i-optimize ang imong VPS sa labing dako nga potensyal niini, nga pahimusli ang matag tulo sa memorya.

发表 评论

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

Linukot nga basahon sa Taas