VPS ta' 8-core u 24GB li qed jispiċċa mingħajr memorja? Irfinar estrem tal-proċess PHP-FPM fil-HestiaCP

L-għadd ta' utenti konkorrenti li server jista' jimmaniġġja ma jiddependix fuq kemm għandu qlub, iżda fuq kemm jikkonsma memorja kull proċess.

Din id-dikjarazzjoni tista’ tinstema’ bħala provokazzjoni, iżda hija l-aktar esperjenza reali u ta’ wġigħ fl-industrija tal-operazzjonijiet u l-manutenzjoni.

Għaliex il-memorja hija l-ostaklu ewlieni?

Ħafna nies jaraw VPS b'CPU ta' 8 qlub u 24GB ta' memorja u subkonxjament jaħsbu li jistgħu faċilment imexxu mijiet ta' proċessi PHP-FPM.

Madankollu, fir-realtà, l-użu tal-memorja RSS ta' proċess PHP wieħed ħafna drabi jkun għoli daqs 200MB.

Dan huwa r-riżultat miksub permezz ta' ttestjar attwali permezz tal-linja tal-kmand:

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

Fl -istruttura kumplessa ta' HestiaCP u l-ambjent b'ħafna plugins, speċjalment mingħajr l-ottimizzazzjoni tal-OPcache, 200MB hija n-norma.

Dan ifisser li l-memorja, mhux is-CPU, hija l-limitu iebes li jiddetermina l-konkorrenza massima.

VPS ta' 8-core u 24GB li qed jispiċċa mingħajr memorja? Irfinar estrem tal-proċess PHP-FPM fil-HestiaCP

Fajl ta' konfigurazzjoni rakkomandat (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

Loġika tal-kalkolu tal-parametri u bażi tal-issettjar

Parametri tal-konfigurazzjoniValur tal-issettjarKalkolu ewlieni u bażi ta' setup
pmdynamicIl-modalità dinamika tippermetti ż-żieda jew it-tħassir elastiku ta' proċessi bbażati fuq rekwiżiti ta' konkorrenza, filwaqt li tibbilanċja l-veloċità tar-rispons u l-użu tal-memorja.
pm.max_tfal8024GB memorja totali mingħajr il-kernel tas-sistema u MySQL/Ddistribwit mill-Wara Nginx, fadal madwar 16GB għall-PHP.16,384 MB / 200 MB ≈ 81.9Jekk tissettjaha għal 80 tista' telimina kompletament l-OOM (Out of Memory) waqt konkorrenza għolja.
pm.start_servers16It-tisħin minn qabel fil-bidu huwa ssettjat għad-doppju tan-numru ta' qlub tas-CPU (8 qlub × 2 = 16) biex jiżgura li s-servizz ikun jista' jimmaniġġja immedjatament il-konkorrenza bażika wara li jerġa' jibda.
pm.min_spare_servers8Issettja l-għadd tal-qlub tas-CPU għal 8 qlub biex tiżgura li talbiet ġodda jistgħu jiġu mwieġba fi kwalunkwe ħin matul perjodi ta' traffiku baxx.
pm.max_spare_servers24Issettjah għal 3 darbiet in-numru ta' qlub tas-CPU (8 qlub × 3 = 24) biex iżżomm numru moderat ta' proċessi wara li t-traffiku jonqos, sabiex timmaniġġja varjazzjonijiet ħfief.
pm.max_requests500Jekk proċess wieħed jilħaq bażi kbira ta' 200MB, it-tnaqqis tan-numru ta' talbiet għal 500 qabel il-qerda u l-bini mill-ġdid jista' jnaddaf it-tnixxijiet impliċiti tal-memorja aktar malajr.
pm.process_idle_timeout10s超出 min_spare_servers Il-proċessi inattivi jiġu rilaxxati awtomatikament u rritornati fil-memorja tas-sistema wara 10 sekondi mingħajr ebda talba.

Suġġerimenti Essenzjali ta' Appoġġ għas-Settings u l-Ottimizzazzjoni

1. Mekkaniżmu kontra l-hangover ta' timeout

request_terminate_timeout = 60s Dik hija ċ-ċavetta.

Jista' jtemm bil-forza proċessi li jkunu mwaħħlin minħabba imblukkar fid-database jew imblukkar tal-API minn partijiet terzi.

Sadanittant, ta' Nginx fastcgi_read_timeout Irid jinżamm għal mill-inqas 60 sekonda, inkella l-klijent jirċevih qabel iż-żmien. 504 Gateway Timeout.

2. Strateġiji biex jingħelbu l-ostakli tal-memorja

Massimu ta' 80 proċess konkorrenti jfisser li taħt kundizzjonijiet estremi ta' konkorrenza, is-sistema tista' timmaniġġja massimu ta' 80 talba HTTP dinamika simultanjament.

Jekk trid ittejjeb aktar il-kapaċità, l-enfasi għandha tkun fuq it-tnaqqis tal-użu tal-memorja għal kull proċess.

  • Ippermetti OPcache: 在 php.ini Konfigurazzjoni medja opcache.enable=1 U opcache.memory_consumption=256Il-caching tal-bytecode jista' jnaqqas l-użu tal-memorja ta' proċess wieħed minn 200MB għal 60~100MB.
  • Kontroll raġonevoli tal-memory_limit:将 php.ini nofs memory_limit Limitat għal 128M Jew 256MBiex jiġu evitati skripts individwali anormaliillimitatJikkonsma ħafna memorja.

Ladarba l-użu tal-memorja ta' proċess wieħed jinżel għal 100MB...pm.max_children Jista' jiġi aġġornat b'mod sigur għal 150 Barra minn hekk, il-kapaċità ta' konkorrenza kważi rdoppjat.

Perspettivi awtorevoli ċċitati

Skont ir-rakkomandazzjonijiet fid -dokumentazzjoni uffiċjali ta' Nginx :

"L-applikazzjonijiet FastCGI għandhom dejjem jiġu mmonitorjati b'direttivi ta' timeout biex jiġi evitat l-eżawriment tar-riżorsi."
(Sors: Dokumenti ta' Nginx)

Il -manwal uffiċjali tal-PHP jiddikjara b'mod ċar:

"pm.max_children jiddefinixxi l-għadd massimu ta' proċessi tat-tfal li għandhom jinħolqu. Din hija l-aktar direttiva importanti."
(Sors: Dokumentazzjoni PHP-FPM)

Dawn il-fehmiet awtorevoli huma allinjati perfettament mal-prattiki tagħna, u dan juri li l-loġika tal-ottimizzazzjoni mhix ibbażata biss fuq l-esperjenza, iżda wkoll fuq l-aħjar prattiki standardizzati.

Konklużjoni: Il-Fehmiet u l-Kwotazzjonijiet Ewlenin Tiegħi

F'xenarji ta' konkorrenza għolja, is-CPU hija l-magna, il-memorja hija t-tank tal-fjuwil, u l-PHP-FPM huwa d-dispaċċatur tal-flotta.

Ma jimpurtax kemm hi qawwija l-magna, jekk it-tank tal-fjuwil ma jkunx kbir biżżejjed, il-konvoj mhux se jasal 'il bogħod ħafna.

L-esperti veri ma jimmassimizzawx il-parametri bl-addoċċ, iżda pjuttost jikkalkulaw b'mod preċiż l-użu tal-memorja ta' kull proċess biex jevitaw kemm il-ħela kif ukoll l-overflow.

L-essenza tal-ottimizzazzjoni hija li ssib il-bilanċ ottimali b'riżorsi limitati.

Din mhix biss teknoloġija, iżda wkoll filosofija.

Għalhekk, ieqaf temmen li "n-numru ta' qlub jiddetermina kollox." Dak li verament jiddetermina l-limitu tal-konkorrenza huwa l-kontroll tiegħek fuq il-memorja.

Ħu azzjoni u ottimizza l-VPS tiegħek sal-massimu tal-potenzjal tiegħu, billi tagħmel l-aħjar użu minn kull qatra memorja.

发表 评论

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

Skrollja Top