VPS 8-craidd 24GB yn rhedeg allan o gof? Addasu pwll proses PHP-FPM eithafol yn HestiaCP

Mae nifer y defnyddwyr cydamserol y gall gweinydd eu trin yn dibynnu nid ar faint o greiddiau sydd ganddo, ond ar faint o gof y mae pob proses yn ei ddefnyddio.

Efallai bod y datganiad hwn yn swnio fel pryfociad, ond dyma'r profiad mwyaf real a phoenus yn y diwydiant gweithrediadau a chynnal a chadw.

Pam mai cof yw'r prif dagfa?

Mae llawer o bobl yn gweld VPS gyda CPU 8-craidd a 24GB o gof ac yn meddwl yn isymwybodol y gallant redeg cannoedd o brosesau PHP-FPM yn hawdd.

Fodd bynnag, mewn gwirionedd, mae defnydd cof RSS un broses PHP yn aml mor uchel â 200MB.

Dyma'r canlyniad a gafwyd trwy brofion gwirioneddol trwy'r llinell orchymyn:

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

Yn fframwaith cymhleth ac amgylchedd aml-ategyn HestiaCP , yn enwedig heb optimeiddio OPcache, 200MB yw'r norm.

Mae hwyrach bod y cof, nid y CPU, yn derfyn caled sy'n pennu'r cyfochredd mwyaf.

VPS 8-craidd 24GB yn rhedeg allan o gof? Addasu pwll proses PHP-FPM eithafol yn HestiaCP

Ffeil ffurfweddu a argymhellir (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

Rhesymeg cyfrifo paramedr a sail gosod

Paramedrau ffurfwedduGosod gwerthCyfrifiad craidd a sail sefydlu
pmdynamicMae modd deinamig yn caniatáu ychwanegu neu ddileu prosesau'n elastig yn seiliedig ar ofynion cydamseredd, gan gydbwyso cyflymder ymateb a defnydd cof.
pm.max_plant8024GB o gof cyfanswm heb graidd y system a MySQL/RedisAr ôl Nginx, mae tua 16GB ar ôl ar gyfer PHP.16,384 MB / 200 MB ≈ 81.9Gall ei osod i 80 ddileu OOM (Allan o Gof) yn llwyr yn ystod cydamseredd uchel.
pm.start_servers16Mae cynhesu ymlaen llaw wrth gychwyn wedi'i osod i ddwywaith nifer y creiddiau CPU (8 craidd × 2 = 16) i sicrhau y gall y gwasanaeth ymdrin â chydamseredd sylfaenol ar unwaith ar ôl ailgychwyn.
gweinyddion_sbâr_pm.min8Gosodwch gyfrif craidd y CPU i 8 craidd i sicrhau y gellir ymateb i geisiadau newydd ar unrhyw adeg yn ystod cyfnodau traffig isel.
gweinyddion_sbâr_pm.max24Gosodwch ef i 3 gwaith nifer y creiddiau CPU (8 craidd × 3 = 24) i gadw nifer cymedrol o brosesau ar ôl i'r traffig leihau, er mwyn ymdopi ag amrywiadau ysgafn.
pm.max_requests500Os yw un broses yn cyrraedd sylfaen fawr o 200MB, gall lleihau nifer y ceisiadau i 500 cyn dinistrio ac ailadeiladu lanhau gollyngiadau cof ymhlyg yn gyflymach.
pm.process_idle_timeout10s超出 min_spare_servers Caiff prosesau segur eu rhyddhau'n awtomatig a'u dychwelyd i gof y system ar ôl 10 eiliad heb unrhyw geisiadau.

Gosodiadau Cefnogol Hanfodol ac Awgrymiadau Optimeiddio

1. Mecanwaith gwrth-ben mawr amserol

request_terminate_timeout = 60s Dyna'r allwedd.

Gall derfynu prosesau sydd wedi'u sownd oherwydd sefyllfa lle nad yw'r gronfa ddata wedi'i chloi neu rwystro API trydydd parti yn orfodol.

Yn y cyfamser, Nginx fastcgi_read_timeout Rhaid ei gadw am o leiaf 60 eiliad, fel arall bydd y cleient yn ei dderbyn yn gynamserol. 504 Gateway Timeout.

2. Strategaethau i oresgyn tagfeydd cof

Mae uchafswm o 80 o brosesau cydamserol yn golygu, o dan amodau cydamseredd eithafol, y gall y system drin uchafswm o 80 o geisiadau HTTP deinamig ar yr un pryd.

Os ydych chi am wella capasiti ymhellach, dylai'r ffocws fod ar leihau'r defnydd o gof fesul proses.

  • Galluogi OPcache: 在 php.ini Ffurfweddiad canolig opcache.enable=1opcache.memory_consumption=256Gall storio cod byte leihau'r defnydd o gof ar gyfer un broses o 200MB i 60~100MB.
  • Rheolaeth resymol o gyfyngiad_memory:将 php.ini canol memory_limit Cyfyngedig i 128M256MEr mwyn atal sgriptiau annormal unigoldiderfynMae'n defnyddio llawer o gof.

Unwaith y bydd defnydd cof un broses yn gostwng i 100MB...pm.max_children Gellir ei uwchraddio'n ddiogel i 150 Yn ogystal, mae'r gallu cydamserol bron wedi dyblu.

Safbwyntiau awdurdodol a ddyfynnwyd

Yn ôl yr argymhellion yn nogfennaeth swyddogol Nginx :

"Dylid monitro cymwysiadau FastCGI bob amser gyda chyfarwyddebau terfyn amser i atal gorlifo adnoddau."
(Ffynhonnell: Dogfennau Nginx)

Mae llawlyfr swyddogol PHP yn datgan yn glir:

"Mae pm.max_children yn diffinio'r nifer uchaf o brosesau plant i'w creu. Dyma'r gyfarwyddeb bwysicaf."
(Ffynhonnell: Dogfennaeth PHP-FPM)

Mae'r safbwyntiau awdurdodol hyn yn cyd-fynd yn berffaith â'n harferion, gan brofi nad yw rhesymeg optimeiddio yn seiliedig ar brofiad yn unig, ond hefyd ar arferion gorau safonol.

Casgliad: Fy Safbwyntiau a Dyfyniadau Allweddol

Mewn senarios cydamserol uchel, y CPU yw'r injan, y cof yw'r tanc tanwydd, a PHP-FPM yw'r dosbarthwr fflyd.

Ni waeth pa mor bwerus yw'r injan, os nad yw'r tanc tanwydd yn ddigon mawr, ni fydd y confoi yn mynd yn bell iawn.

Nid yw arbenigwyr go iawn yn cynyddu'r paramedrau'n ddall, ond yn hytrach yn cyfrifo'n fanwl gywir faint o gof mae pob proses yn ei ddefnyddio er mwyn osgoi gwastraff a gorlif.

Hanfod optimeiddio yw dod o hyd i'r cydbwysedd gorau posibl gydag adnoddau cyfyngedig.

Nid technoleg yn unig yw hon, ond athroniaeth hefyd.

Felly, stopiwch gredu bod "nifer y creiddiau yn pennu popeth." Yr hyn sy'n pennu'r terfyn cydamseredd mewn gwirionedd yw eich rheolaeth dros y cof.

Cymerwch gamau ac optimeiddiwch eich VPS i'w botensial llawn, gan wneud y gorau o bob diferyn o gof.

发表 评论

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

Sgroliwch i'r brig