Greinaskrá
- 1 Kjarnaástæðan fyrir því að PHP-FPM er of mikið
- 2 PHP-FPM hagræðing ferlis (aðlögun kjarnabreytu)
- 3 Virkjaðu PHP-FPM stöðuvöktun til að fylgjast með framvindunni hvenær sem er
- 4 Fínstilltu PHP-FPM annála til að leysa vandamál fljótt
- 5 Endurræstu PHP-FPM reglulega til að koma í veg fyrir minnisleka
- 6 Hvað ef vandamálið er viðvarandi? Frekari hagræðing!
- 7 Samantekt: Fínstilltu PHP-FPM og vefsíðan mun ekki lengur hrynja!
Hefur þú einhvern tíma lent í þessu ástandi?Aðgangur vefsíðunnar hægðist skyndilega, eða leiddi jafnvel til 500 villu Eftir að PHP-FPM var endurræst fór það aftur í eðlilegt horf., en vandamálið kemur aftur eftir smá stund? Þetta er svo svekkjandi!
Af hverju er þetta að gerast?Reyndar er þetta venjulegaPHP-FPM vinnsluhópurinn er ekki rétt stilltur eða auðlindir netþjónsins eru ófullnægjandi.af völdum. Í dag munum við fínstilla rækilega HestiaCP PHP-FPM undir hettunni gerir vefsíðuna stöðuga eins og steinn!
Kjarnaástæðan fyrir því að PHP-FPM er of mikið
PHP-FPM er aFerlastjóri, sem ber ábyrgð á meðhöndlun kraftmikilla beiðna. Ef uppsetningin er ekki sanngjörn getur það leitt til:
- Tilföng netþjóna eru uppurin, sem veldur því að PHP-FPM getur ekki svarað nýjum beiðnum tímanlega;
- Of fáir ferlar, þegar umferð eykst skyndilega er ekki hægt að vinna úr henni í tíma;
- Ferlanotkun er of mikil, sem veldur því að CPU álagið springur.

Hvernig á að sjá hvort PHP-FPM sé of mikið?
getur notað top Eða htop Skipun til að skoða CPU og minnisnotkun:
top -c
Ef þú sérð vinnsluupplýsingar svipaðar eftirfarandi þýðir það að PHP-FPM keyrir undir miklu álagi:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
Sjáðu hvernig þessi ferli taka yfir 70% af örgjörvanum? Ef þetta gerist oft, PHP-FPM Það hlýtur að vera vandamál!
Svo, hvernig getum við fínstillt PHP-FPM stillingarnar þannig að þjónninn sé ekki lengur ofhlaðinn?
PHP-FPM hagræðing ferlis (aðlögun kjarnabreytu)
Fyrst, opið php-fpm Stillingarskrár:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Skiptu yfir í PHP útgáfuna þína, eins og PHP8.3, og breyttu henni í þetta:
/etc/php/8.3/fpm/pool.d/www.conf
Spyrja um PHP útgáfuna sem HestiaCP hefur stillt
v-list-web-domain user domain.com
Td:
v-list-web-domain abc chenweiliang.com
Í úttakinu muntu sjá eitthvað eins og:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Þetta þýðir að síðan notar PHP 8.3.
Við skulum skoða PHP-FPM stillingarnar þínar:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
Þú getur séð að þitt pm Sá sem notaður er er ondemand,Þó að það geti dregið úr auðlindanotkun á aðgerðalausu tíma, þegar umferð eykst skyndilega, getur ferlið ekki brugðist í tæka tíð., sem leiðir til 500 villu.
1. Stilltu færibreytur PHP-FPM vinnsluhóps
Ef uppsetningin notar dynamicÞetta er aðferð til að forræsa ákveðna vinnuferla og aðlaga þá sjálfkrafa í samræmi við beiðnamagn, sem getur brugðist hraðar við þegar beiðnamagnið eykst skyndilega.
Fyrir vefsíður með ákveðna umferð er mælt með því að nota pm = dynamicVegna þess að það getur viðhaldið ákveðnum fjölda aðgerðalausra ferla og forðast 500 villur við mikla samhliða virkni.
Mælt er með að nota það aðeins þegar aðgangsmagnið er mjög lítið og minnisauðlindir af skornum skammti. pm = ondemand Til að spara auðlindir.
Lagt til að ondemand, og hagræða pm.max_children Og aðrar breytur:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
Af hverju viltu breyta þessu svona?
pm = dynamic: Úthluta ferlum á sveigjanlegri hátt til að forðast bið eftir beiðni sem gæti stafað af eftirspurn;pm.max_children = 16: Koma í veg fyrir 500 villur af völdum of fárra ferla;pm.start_servers = 5: Forðastu hæga gangsetningu;pm.max_requests = 3000:Koma í veg fyrir minnisleka, endurvinna ferlið reglulega.
2. Takmarkaðu framkvæmdartíma PHP forskrifta til að koma í veg fyrir langtíma umráð
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Þetta getur komið í veg fyrir sumaPHP forskriftir sem nota of mikinn CPU geta komið þjóninum þínum niður.
Eftir vistun skaltu endurræsa PHP ferlið:
sudo systemctl restart php8.3-fpmVirkjaðu PHP-FPM stöðuvöktun til að fylgjast með framvindunni hvenær sem er
Virkjaðu PHP-FPM ferlivöktun og skoðaðu það hvenær sem erNúverandi fjöldi virkra ferla og biðstöðu biðstöðu, til að forðast ofhleðslu á netþjóni.
Í php-fpm.conf Bætt við í:
pm.status_path = /status
Síðan, Nginx stillingar:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
Á þennan hátt geturðu http://yourdomain.com/status Skoðaðu PHP-FPM í aðgerð!
Fínstilltu PHP-FPM annála til að leysa vandamál fljótt
Í php-fpm.conf Bætt við:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
Á þennan hátt, hvenær sem 500 villa kemur upp, geturðu skoðað annálinn beint:
tail -f /var/log/php-fpm/error.log
Athugaðu hvort PHP tilkynnir um villu, svo sem out of memory,script execution timeout Bíddu.
Endurræstu PHP-FPM reglulega til að koma í veg fyrir minnisleka
fær um að standast cron Endurræstu PHP-FPM reglulega til að koma í veg fyrir að langvarandi ferli valdiMinnisleki.
crontab -e
Bættu við eftirfarandi áætluðu verkefni til að endurræsa PHP-FPM sjálfkrafa klukkan 3 á hverjum degi:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Hvað ef vandamálið er viðvarandi? Frekari hagræðing!
Ef þú fylgir enn ofangreindri hagræðinguStundum koma 500 villur upp, þú getur haldið áfram með eftirfarandi fínstillingar:
1. Virkjaðu OPcache til að bæta PHP framkvæmd skilvirkni
Ef OPcache er ekki virkt ennþá geturðu sett það upp svona (með því að nota Ubuntu sem dæmi):
sudo apt install php8.3-opcache -y
Breyttu síðan php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Áhrif? Framkvæmdarhraði PHP síðu hefur verið stórbættur!
2. Nginx stillingar hagræðingu
Gakktu úr skugga um að Nginx tengdar breytur séu sanngjarnar, svo sem fastcgi_read_timeout Stilltu það á viðeigandi hátt til að koma í veg fyrir að PHP forskriftum sé sagt upp af Nginx vegna langrar framkvæmdartíma:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Samantekt: Fínstilltu PHP-FPM og vefsíðan mun ekki lengur hrynja!
Hvaða leiðréttingar höfum við gert eftir þessa hagræðingu?
✅ Fínstilling á PHP-FPM vinnsluhópnum, nota ondemandOg hagræða pm.max_children færibreyta;
✅ Takmörkun á framkvæmdartíma PHP forskrifta, til að koma í veg fyrir langtíma CPU starf;
✅ Virkjaðu PHP-FPM eftirlit, skoðaðu ferlið í rauntíma;
✅ Hagræðing PHP-FPM annála, fljótt að leysa 500 villur;
✅ Endurræstu PHP-FPM reglulega, koma í veg fyrir minnisleka;
✅ Virkja OPcache, bæta PHP framkvæmd skilvirkni;
✅ Hagræðing Nginx stillingar, til að forðast vandamál með tímamörk.
Eftir þessa hagræðingu mun PHP-FPM álagið minnka til muna og rekstur vefsíðunnar verður stöðugri! 🔥
Farðu að prófa það núna! 💪🚀
Hope Chen Weiliang blogg ( https://www.chenweiliang.com/ ) deildi „HestiaCP PHP-FPM álag er of hátt? Dynamic vefsíðu 500 villa? Þessi hagræðing tekur gildi strax! “, gæti það verið gagnlegt fyrir þig.
Velkomið að deila tengli þessarar greinar:https://www.chenweiliang.com/cwl-32512.html
Til að opna fleiri falda brellur🔑, velkomin(n) á Telegram rásina okkar!
Deildu og likeðu ef þér líkar við! Deilingar þínar og líkar við eru áframhaldandi hvatning okkar!