HestiaCP PHP-FPM er undir miklu álagi? Dynamic vefsíðu 500 villa? Þessi hagræðing tekur gildi strax!

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.

HestiaCP PHP-FPM er undir miklu álagi? Dynamic vefsíðu 500 villa? Þessi hagræðing tekur gildi strax!

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-fpm

Virkjað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! 💪🚀

发表 评论

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru notaðir * Merkimiði

Flettu að Top