Article Directory
Ny isan'ny mpampiasa miaraka azon'ny mpizara iray karakaraina dia tsy miankina amin'ny isan'ny cores ananany, fa amin'ny habetsaky ny fahatsiarovana lanin'ny dingana tsirairay.
Mety ho toa fihantsiana ity fanambarana ity, nefa io no traikefa tena misy sy maharary indrindra eo amin'ny sehatry ny asa sy ny fikojakojana.
Nahoana ny fitadidiana no sakana lehibe?
Maro ny olona mahita VPS manana CPU 8-core sy fahatsiarovana 24GB ary mieritreritra tsy nahy fa afaka mampandeha mora foana dingana PHP-FPM an-jatony izy ireo.
Na izany aza, raha ny marina, ny fampiasana fahatsiarovana RSS amin'ny dingana PHP tokana dia matetika mahatratra 200MB.
Ity ny vokatra azo tamin'ny alalan'ny fitsapana tena izy tamin'ny alalan'ny baiko:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
Ao anatin'ny tontolo sarotra sy plugin maro an'ny HestiaCP , indrindra raha tsy misy fanatsarana ny OPcache, dia 200MB no mahazatra.
Midika izany fa ny fahatsiarovana, fa tsy ny CPU, no fetra henjana mamaritra ny fiaraha-miasa ambony indrindra.

Rakitra fikirakirana atolotra (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
Lojika kajy masontsivana sy fototra fametrahana
| Paramètre config | Fametrahana ny sandany | Kajy fototra sy fototra fametrahana |
|---|---|---|
| pm | dynamic | Ny fomba dinamika dia ahafahana manampy na mamafa ireo dingana mifototra amin'ny fepetra takiana amin'ny fiaraha-miasa, ny fandanjalanjana ny hafainganam-pandehan'ny famaliana ary ny fampiasana ny fahatsiarovana. |
| pm.max_children | 80 | Fahatsiarovana 24GB manontolo tsy misy ny kernel sy ny rafitra MySQL/RedisAorian'ny Nginx, eo amin'ny 16GB eo ho eo no sisa ho an'ny PHP.16,384 MB / 200 MB ≈ 81.9Ny fametrahana azy ho 80 dia afaka manafoana tanteraka ny OOM (Out of Memory) mandritra ny fotoana ifandrimbonana avo lenta. |
| pm.start_servers | 16 | Ny fanafanana mialoha amin'ny fanombohana dia apetraka ho avo roa heny noho ny isan'ny cores CPU (cores 8 × 2 = 16) mba hahazoana antoka fa afaka miatrika avy hatrany ny fiaraha-miasa fototra ny serivisy rehefa avy averina atomboka. |
| pm.min_spare_servers | 8 | Apetraho ho 8 ny isan'ny core an'ny CPU mba hahazoana antoka fa azo valiana amin'ny fotoana rehetra ny fangatahana vaovao mandritra ny fotoana tsy dia misy fifamoivoizana. |
| pm.max_spare_servers | 24 | Apetraho ho in-3 ny isan'ny core CPU (core 8 × 3 = 24) mba hitazonana ny isan'ny processeur antonony rehefa mihena ny fifamoivoizana, mba hiatrehana ny fiovaovana malefaka. |
| pm.max_requests | 500 | Raha mahatratra 200MB ny haben'ny rakitra iray, ny fampihenana ny isan'ny fangatahana ho 500 alohan'ny handravana sy hanamboarana azy indray dia afaka manadio haingana kokoa ny fivoahan'ny fahatsiarovana miafina. |
| pm.process_idle_time out | 10s | indrindra min_spare_servers Avotsotra ho azy ireo dingana tsy mihetsika ary averina ao amin'ny fitadidian'ny rafitra rehefa afaka 10 segondra tsy misy fangatahana. |
Fanohanana fototra sy soso-kevitra momba ny fanatsarana
1. Mekanisma fanoherana ny fahatapahan'ny fotoana
request_terminate_timeout = 60s Izany no fanalahidy.
Afaka manafoana an-keriny ireo dingana izay mihidy noho ny tsy fahatomombanan'ny angon-drakitra na ny fanakanana API avy amin'ny antoko fahatelo izy io.
Mandritra izany fotoana izany, ny Nginx fastcgi_read_timeout Tsy maintsy tehirizina mandritra ny 60 segondra farafahakeliny izany, raha tsy izany dia ho azon'ny mpanjifa mialoha ny fotoana. 504 Gateway Timeout.
2. Tetika handresena ny sakana amin'ny fitadidiana
Ny fahafahana manao dingana miaraka miisa 80 fara-fahabetsany dia midika fa ao anatin'ny fepetra miaraka fara-fahabetsany, ny rafitra dia afaka mikarakara fangatahana HTTP dinamika miisa 80 miaraka.
Raha te hanatsara bebe kokoa ny fahafaha-manao ianao dia tokony hifantoka amin'ny fampihenana ny fampiasana fahatsiarovana isaky ny dingana.
- Alefaso ny OPcache:在
php.iniFikirana antononyopcache.enable=1aryopcache.memory_consumption=256Afaka mampihena ny fampiasana fahatsiarovana amin'ny dingana tokana avy amin'ny 200MB ka hatramin'ny 60~100MB ny fitahirizana Bytecode. - Fifehezana ara-drariny ny memory_limit:Will
php.iniafovoanymemory_limitVoafetra ho128M或256MMba hisorohana ny soratra tsy ara-dalàna tsirairaymanam-petraMandany fahatsiarovana be dia be izany.
Raha vao mihena ho 100MB ny fampiasana fahatsiarovana amin'ny dingana iray...pm.max_children Azo havaozina soa aman-tsara ho 150 Ankoatra izany, dia nitombo efa ho avo roa heny ny fahafaha-manao miaraka.
Hevitra manam-pahefana voatonona
Araka ny tolo-kevitra ao amin'ny antontan-taratasy ofisialy Nginx :
"Tokony harahina maso foana ny fampiharana FastCGI miaraka amin'ny toromarika momba ny fotoana lany mba hisorohana ny fahapotehan'ny loharanon-karena."
(Loharano: Nginx Docs)
Milaza mazava tsara ny boky torolalana ofisialy momba ny PHP hoe:
"Ny pm.max_children no mamaritra ny isan'ny dingana zanaka ambony indrindra hoforonina. Ity no toromarika manan-danja indrindra."
(Loharano: Antontan-taratasy PHP-FPM)
Mifanaraka tsara amin'ny fomba fanaonay ireo fomba fijery manana fahefana ireo, izay manaporofo fa ny lojikan'ny fanatsarana dia tsy mifototra amin'ny traikefa ihany, fa amin'ny fomba fanao tsara indrindra manara-penitra ihany koa.
Famaranana: Ny fomba fijeriko sy ny teny nalaina fototra
Amin'ny toe-javatra misy fiaraha-miasa avo lenta, ny CPU no motera, ny fahatsiarovana no tankin-tsolika, ary ny PHP-FPM no mpaninjara ny andian-drakitra.
Na dia mahery toy inona aza ny motera, raha tsy ampy ny fitoeran-tsolika, dia tsy ho lasa lavitra ny fiarabe.
Ny tena manam-pahaizana dia tsy maka ny fara tampony amin'ny masontsivana rehetra, fa manao kajy mazava tsara ny fampiasana ny fahatsiarovana amin'ny dingana tsirairay mba hisorohana ny fandaniam-poana sy ny tondra-drano.
Ny tanjon'ny fanatsarana dia ny fitadiavana ny fandanjalanjana tsara indrindra miaraka amin'ny loharanon-karena voafetra.
Tsy teknolojia fotsiny ihany ity, fa filozofia ihany koa.
Noho izany, atsaharo ny finoana fa "ny isan'ny cores no mamaritra ny zava-drehetra." Ny tena mamaritra ny fetran'ny concurrency dia ny fifehezanao ny fahatsiarovana.
Manaova zavatra ary ampiharo amin'ny fomba feno indrindra ny VPS-nao, ary ampiasao tsara ny fitadidiana rehetra.
Antenaina fa hanampy anao ilay lahatsoratra hoe "8-core 24GB VPS running out of memory? Extreme tuning of PHP-FPM process pool under HestiaCP" nozaraina tao amin'ny bilaogin'i Chen Weiliang ( https://www.chenweiliang.com/ ).
Aza misalasala mizara ity rohy ity: https://www.chenweiliang.com/cwl-34509.html
