Artikulo Direktoryo
- 1 Ang kinauyokan nga rason nganong na-overload ang PHP-FPM
- 2 PHP-FPM nga proseso sa pool optimization (core parameter adjustment)
- 3 I-enable ang PHP-FPM status monitoring aron masubay ang pag-uswag bisan unsang orasa
- 4 I-optimize ang mga log sa PHP-FPM aron dali nga masulbad ang mga problema
- 5 Regular nga i-restart ang PHP-FPM aron malikayan ang mga pagtulo sa memorya
- 6 Unsa kaha kon ang problema magpadayon? Dugang nga pag-optimize!
- 7 Summary: I-optimize ang PHP-FPM ug ang website dili na mahagsa!
Nakasinati ka na ba niini nga sitwasyon?Ang pag-access sa website kalit nga nihinay, o niresulta sa 500 nga sayup Human sa pagsugod pag-usab sa PHP-FPM, mibalik kini sa normal., pero ang problema mubalik pag kadugay? Kini makapahigawad kaayo!
Ngano nga kini nahitabo?Sa pagkatinuod, kasagaran kiniAng PHP-FPM process pool wala ma-configure sa husto, o ang mga kapanguhaan sa server dili igo.gipahinabo sa. Karon, kita hingpit nga mag-optimize HestiaCP Ang PHP-FPM sa ilawom sa tabon naghimo sa website nga lig-on sama sa usa ka bato!
Ang kinauyokan nga rason nganong na-overload ang PHP-FPM
Ang PHP-FPM usa kaManager sa Proseso, nga responsable sa pagdumala sa dinamikong mga hangyo. Kung ang configuration dili makatarunganon, kini mahimong mosangpot sa:
- Ang mga kapanguhaan sa server nahurot, hinungdan nga ang PHP-FPM dili makatubag sa bag-ong mga hangyo sa tukmang panahon;
- Gamay ra kaayo nga mga proseso, kung ang trapiko kalit nga motaas, dili kini maproseso sa oras;
- Taas kaayo ang paggamit sa proseso, hinungdan nga mobuto ang load sa CPU.

Giunsa mahibal-an kung ang PHP-FPM na-overload?
magamit top o htop Sugo sa pagtan-aw sa CPU ug paggamit sa memorya:
top -c
Kung makakita ka og impormasyon sa proseso nga susama sa mosunod, nagpasabot kini nga ang PHP-FPM nagdagan ubos sa taas nga load:
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
Tan-awa kung giunsa kini nga mga proseso nagkuha sa 70% sa CPU? Kung mahitabo kini kanunay, ang imong PHP-FPM Kinahanglang adunay problema!
Busa, unsaon nato pag-optimize ang configuration sa PHP-FPM aron dili na ma-overload ang server?
PHP-FPM nga proseso sa pool optimization (core parameter adjustment)
Una, bukas php-fpm Mga File sa Pag-configure:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Usba sa imong bersyon sa PHP, sama sa PHP8.3, ug usba kini niini:
/etc/php/8.3/fpm/pool.d/www.conf
Pangutana ang bersyon sa PHP nga gitakda sa HestiaCP
v-list-web-domain user domain.com
E.g:
v-list-web-domain abc chenweiliang.com
Sa output, imong makita ang usa ka butang sama sa:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Kini nagpasabot nga ang site naggamit PHP 8.3.
Atong tan-awon ang imong PHP-FPM configuration:
[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
Makita nimo nga imong pm Ang gigamit mao ang ondemand,Bisan kung kini makapakunhod sa paggamit sa kapanguhaan sa panahon nga walay trabaho, kung ang trapiko sa kalit nga pagtaas, ang proseso mahimong dili makatubag sa oras., nga miresulta sa 500 ka sayop.
1. I-adjust ang PHP-FPM process pool parameters
Kung gigamit ang configuration dynamicKini usa ka pamaagi sa pre-pagsugod sa pipila ka mga proseso sa trabaho ug dinamikong pag-adjust niini sumala sa gidaghanon sa hangyo, nga mahimong mas paspas nga motubag kung ang gidaghanon sa hangyo kalit nga motaas.
Alang sa mga website nga adunay piho nga kantidad sa trapiko, girekomenda nga gamiton pm = dynamicTungod kay kini makapadayon sa usa ka piho nga kantidad sa mga proseso nga wala’y mahimo ug malikayan ang 500 nga mga sayup sa panahon sa taas nga panagsama.
Girekomenda nga gamiton lamang kini kung ang gidaghanon sa pag-access hilabihan ka ubos ug ang mga kapanguhaan sa panumduman hugot. pm = ondemand Aron makadaginot sa mga kahinguhaan.
Gisugyot nga usbon sa ondemand, ug optimize pm.max_children Ug uban pang mga parameter:
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 后自动退出
Nganong gusto nimo nga usbon kini sama niini?
pm = dynamic: Paggahin sa mga proseso nga mas flexible aron malikayan ang paghangyo sa paghulat nga mahimong tungod sa ondemand;pm.max_children = 16: Paglikay sa 500 ka mga kasaypanan tungod sa gamay ra kaayo nga mga proseso;pm.start_servers = 5: Likayi ang hinay nga pagsugod sa proseso;pm.max_requests = 3000:Paglikay sa pagtulo sa memorya, i-recycle kanunay ang proseso.
2. Limitahi ang oras sa pagpatuman sa mga script sa PHP aron mapugngan ang dugay nga pag-okupar
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Kini makapugong sa pipilaAng mga script sa PHP nga naggamit og sobra nga CPU makapaubos sa imong server.
Human sa pagtipig, i-restart ang proseso sa PHP:
sudo systemctl restart php8.3-fpmI-enable ang PHP-FPM status monitoring aron masubay ang pag-uswag bisan unsang orasa
I-enable ang pagmonitor sa proseso sa PHP-FPM ug tan-awa kini bisan unsang orasaKasamtangang gidaghanon sa mga aktibo nga proseso ug paghangyo sa kahimtang sa paghulat, aron malikayan ang overloading sa server.
在 php-fpm.conf Gidugang sa:
pm.status_path = /status
Dayon, ang configuration sa Nginx:
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;
}
Niining paagiha, mahimo nimo http://yourdomain.com/status Tan-awa ang PHP-FPM nga naglihok!
I-optimize ang mga log sa PHP-FPM aron dali nga masulbad ang mga problema
在 php-fpm.conf Idugang sa:
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 的脚本记录到日志
Niining paagiha, sa matag higayon nga adunay 500 nga sayup nga mahitabo, direkta nimo nga makita ang log:
tail -f /var/log/php-fpm/error.log
Tan-awa kung ang PHP nagreport sa usa ka sayup, sama sa out of memory,script execution timeout Paghulat.
Regular nga i-restart ang PHP-FPM aron malikayan ang mga pagtulo sa memorya
makapasar cron Regular nga i-restart ang PHP-FPM aron mapugngan ang mga dugay nga proseso nga hinungdanMemory Leaks.
crontab -e
Idugang ang mosunod nga naka-iskedyul nga buluhaton aron awtomatikong i-restart ang PHP-FPM sa alas 3 sa buntag kada adlaw:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Unsa kaha kon ang problema magpadayon? Dugang nga pag-optimize!
Kung gisunod gihapon nimo ang pag-optimize sa ibabawUsahay 500 ka mga sayop ang mahitabo, makapadayon ka sa mosunod nga mga pag-optimize:
1. I-enable ang OPcache aron mapausbaw ang episyente sa pagpatuman sa PHP
Kung wala pa ma-enable ang OPcache, mahimo nimo kini i-install sama niini (gamit ang Ubuntu isip pananglitan):
sudo apt install php8.3-opcache -y
Unya edit php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Epekto? Ang katulin sa pagpatuman sa panid sa PHP miuswag pag-ayo!
2. Pag-optimize sa configuration sa Nginx
Siguroha nga ang mga parameter nga may kalabutan sa Nginx makatarunganon, sama sa fastcgi_read_timeout Ipasibo kini sa tukma aron malikayan ang mga script sa PHP nga gitapos sa Nginx tungod sa taas nga oras sa pagpatuman:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Summary: I-optimize ang PHP-FPM ug ang website dili na mahagsa!
Unsa nga mga pagbag-o ang among nahimo pagkahuman sa kini nga pag-optimize?
✅ Pag-optimize sa PHP-FPM process pool,gamit ondemandUg optimize pm.max_children parametro;
✅ Paglimite sa oras sa pagpatuman sa mga script sa PHP, aron mapugngan ang dugay nga trabaho sa CPU;
✅ I-enable ang pagmonitor sa PHP-FPM, tan-awa ang proseso load sa tinuod nga panahon;
✅ Pag-optimize sa PHP-FPM nga mga log, dali nga masulbad ang 500 nga mga sayup;
✅ I-restart ang PHP-FPM kanunay, malikayan ang pagtulo sa memorya;
✅ I-enable ang OPcache, pagpalambo sa PHP execution efficiency;
✅ Pag-optimize sa Nginx Configuration, aron malikayan ang mga isyu sa timeout.
Pagkahuman niini nga pag-optimize, ang load sa PHP-FPM makunhuran pag-ayo ug ang operasyon sa website mahimong mas lig-on! 🔥
Lakaw sulayi kini karon! 💪🚀
Paglaum Chen Weiliang Blog ( https://www.chenweiliang.com/ ) mipaambit "Taas ra kaayo ang load sa HestiaCP PHP-FPM? Dynamic nga panid sa web 500 nga sayup? Kini nga pag-optimize mo-epekto dayon! ”, tingali makatabang kini kanimo.
Welcome sa pagpaambit sa link niini nga artikulo:https://www.chenweiliang.com/cwl-32512.html
Aron maablihan ang daghang tinago nga mga limbong🔑, welcome sa pag-apil sa among Telegram channel!
Share ug like kung ganahan ka! Ang imong mga share ug likes mao ang among padayon nga kadasig!