Drejtoria e artikujve
- 1 Arsyeja kryesore pse PHP-FPM është e mbingarkuar
- 2 Optimizimi i grupit të procesit PHP-FPM (rregullimi i parametrit bazë)
- 3 Aktivizo monitorimin e statusit PHP-FPM për të mbajtur gjurmët e progresit në çdo kohë
- 4 Optimizoni regjistrat PHP-FPM për të zgjidhur shpejt problemet
- 5 Rinisni rregullisht PHP-FPM për të parandaluar rrjedhjet e kujtesës
- 6 Po sikur problemi të vazhdojë? Optimizimi i mëtejshëm!
- 7 Përmbledhje: Optimizo PHP-FPM dhe faqja e internetit nuk do të rrëzohet më!
A e keni hasur ndonjëherë këtë situatë?Qasja në uebfaqe u ngadalësua papritmas, ose madje rezultoi në një gabim 500 Pas rinisjes së PHP-FPM, u kthye në normalitet., por problemi rishfaqet pas pak? Kjo është kaq frustruese!
Pse po ndodh kjo?Në fakt, kjo është zakonishtGrupi i proceseve PHP-FPM nuk është konfiguruar siç duhet, ose burimet e serverit janë të pamjaftueshme.shkaktuar nga. Sot, ne do të optimizojmë tërësisht HestiaCP PHP-FPM nën kapuç e bën faqen e internetit të qëndrueshme si një gur!
Arsyeja kryesore pse PHP-FPM është e mbingarkuar
PHP-FPM është njëMenaxheri i procesit, i cili është përgjegjës për trajtimin e kërkesave dinamike. Nëse konfigurimi nuk është i arsyeshëm, mund të çojë në:
- Burimet e serverit janë shteruar, duke bërë që PHP-FPM të mos jetë në gjendje t'u përgjigjet kërkesave të reja në kohën e duhur;
- Shumë pak procese, kur trafiku rritet papritur, ai nuk mund të përpunohet në kohë;
- Përdorimi i procesit është shumë i lartë, duke bërë që ngarkesa e CPU të shpërthejë.

Si të dalloni nëse PHP-FPM është i mbingarkuar?
mund të përdorin top ose htop Komanda për të parë përdorimin e CPU dhe kujtesës:
top -c
Nëse shihni informacionin e procesit të ngjashëm me sa vijon, do të thotë që PHP-FPM po funksionon nën ngarkesë të lartë:
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
Shihni se si këto procese po marrin mbi 70% të CPU-së? Nëse kjo ndodh shpesh, PHP-FPM juaj Duhet të ketë një problem!
Pra, si mund të optimizojmë konfigurimin PHP-FPM në mënyrë që serveri të mos mbingarkohet më?
Optimizimi i grupit të procesit PHP-FPM (rregullimi i parametrit bazë)
Së pari, hap php-fpm Skedarët e konfigurimit:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Ndryshoni në versionin tuaj të PHP-së, siç është PHP8.3, dhe ndryshojeni atë në këtë:
/etc/php/8.3/fpm/pool.d/www.conf
Kërko versionin PHP të vendosur nga HestiaCP
v-list-web-domain user domain.com
E.g:
v-list-web-domain abc chenweiliang.com
Në dalje, do të shihni diçka të tillë:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Kjo do të thotë që faqja e internetit përdor PHP 8.3.
Le të hedhim një vështrim në konfigurimin tuaj PHP-FPM:
[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
Ju mund të shihni se juaji pm e përdorur është ondemand,Megjithëse mund të zvogëlojë përdorimin e burimeve gjatë kohës së papunë, kur trafiku rritet papritur, procesi mund të mos jetë në gjendje të përgjigjet në kohë., duke rezultuar në një gabim 500.
1. Rregulloni parametrat e grupit të procesit PHP-FPM
Nëse konfigurimi përdor dynamicKjo është një metodë për të para-nisur disa procese pune dhe për t'i rregulluar ato dinamikisht sipas vëllimit të kërkesave, të cilat mund të përgjigjen më shpejt kur vëllimi i kërkesave rritet papritur.
Për faqet e internetit me një sasi të caktuar trafiku, rekomandohet të përdoret pm = dynamicSepse mund të mbajë një sasi të caktuar procesesh joaktive dhe të shmangë 500 gabime gjatë njëkohshmërisë së lartë.
Rekomandohet ta përdorni vetëm kur vëllimi i aksesit është jashtëzakonisht i ulët dhe burimet e memories janë të pakta. pm = ondemand Për të kursyer burime.
Sugjerohet të ndryshohet në ondemand, dhe optimizoni pm.max_children Dhe parametra të tjerë:
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 后自动退出
Pse doni ta ndryshoni në këtë mënyrë?
pm = dynamic: Alokoni proceset në mënyrë më fleksibël për të shmangur pritjen e kërkesave që mund të shkaktohen nga kërkesa;pm.max_children = 16: Parandaloni 500 gabime të shkaktuara nga shumë pak procese;pm.start_servers = 5: Shmangni fillimin e ngadaltë të procesit;pm.max_requests = 3000:Parandalimi i rrjedhjeve të kujtesës, ricikloni procesin rregullisht.
2. Kufizoni kohën e ekzekutimit të skripteve PHP për të parandaluar pushtimin afatgjatë
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Kjo mund të parandalojë disaSkriptet PHP që përdorin shumë CPU mund të rrëzojnë serverin tuaj.
Pas ruajtjes, rinisni procesin PHP:
sudo systemctl restart php8.3-fpmAktivizo monitorimin e statusit PHP-FPM për të mbajtur gjurmët e progresit në çdo kohë
Aktivizo monitorimin e procesit PHP-FPM dhe shikoje atë në çdo kohëNumri aktual i proceseve aktive dhe statusi i kërkesës në pritje, për të shmangur mbingarkimin e serverit.
在 php-fpm.conf Shtuar në:
pm.status_path = /status
Pastaj, konfigurimi 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;
}
Në këtë mënyrë, ju mund të http://yourdomain.com/status Shikoni PHP-FPM në veprim!
Optimizoni regjistrat PHP-FPM për të zgjidhur shpejt problemet
在 php-fpm.conf Shto në:
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 的脚本记录到日志
Në këtë mënyrë, sa herë që ndodh një gabim 500, ju mund të shikoni drejtpërdrejt regjistrin:
tail -f /var/log/php-fpm/error.log
Shihni nëse PHP raporton një gabim, si p.sh out of memory,script execution timeout 等.
Rinisni rregullisht PHP-FPM për të parandaluar rrjedhjet e kujtesës
në gjendje të kalojë cron Rinisni rregullisht PHP-FPM për të parandaluar shkaktimin e proceseve të gjataRrjedhje memorie.
crontab -e
Shtoni detyrën e mëposhtme të planifikuar për të rifilluar automatikisht PHP-FPM në orën 3 të mëngjesit çdo ditë:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Po sikur problemi të vazhdojë? Optimizimi i mëtejshëm!
Nëse vazhdoni të ndiqni optimizimin e mësipërmHerë pas here ndodhin 500 gabime, mund të vazhdoni me optimizimet e mëposhtme:
1. Aktivizo OPcache për të përmirësuar efikasitetin e ekzekutimit të PHP
Nëse OPcache nuk është aktivizuar ende, mund ta instaloni në këtë mënyrë (duke përdorur Ubuntu si shembull):
sudo apt install php8.3-opcache -y
Pastaj redakto php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Efekti? Shpejtësia e ekzekutimit të faqes PHP është përmirësuar shumë!
2. Optimizimi i konfigurimit Nginx
Sigurohuni që parametrat e lidhur me Nginx të jenë të arsyeshëm, si p.sh fastcgi_read_timeout Rregullojeni siç duhet për të shmangur përfundimin e skripteve PHP nga Nginx për shkak të kohës së gjatë të ekzekutimit:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Përmbledhje: Optimizo PHP-FPM dhe faqja e internetit nuk do të rrëzohet më!
Çfarë rregullimesh kemi bërë pas këtij optimizimi?
✅ Optimizimi i grupit të proceseve PHP-FPM, përdorni ondemandDhe optimizoni pm.max_children parametër;
✅ Kufizimi i kohës së ekzekutimit të skripteve PHP, për të parandaluar pushtimin afatgjatë të CPU-së;
✅ Aktivizo monitorimin PHP-FPM, shikoni ngarkesën e procesit në kohë reale;
✅ Optimizimi i regjistrave PHP-FPM, zgjidhni shpejt 500 gabime;
✅ Rinisni rregullisht PHP-FPM, parandaloni rrjedhjet e kujtesës;
✅ Aktivizo OPcache, të përmirësojë efikasitetin e ekzekutimit të PHP;
✅ Optimizimi i konfigurimit Nginx, për të shmangur problemet e afatit.
Pas këtij optimizimi, ngarkesa PHP-FPM do të reduktohet shumë dhe funksionimi i faqes në internet do të jetë më i qëndrueshëm! 🔥
Shko provo tani! 💪🚀
Blogu Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shpërndau "Ngarkesa e HestiaCP PHP-FPM është shumë e lartë? Gabim në faqen dinamike të internetit 500? Ky optimizim do të hyjë në fuqi menjëherë! ”, mund të jetë e dobishme për ju.
Mirë se vini të shpërndani lidhjen e këtij artikulli:https://www.chenweiliang.com/cwl-32512.html
Për të zhbllokuar më shumë truke të fshehura🔑, mirë se vini të bashkoheni me kanalin tonë në Telegram!
Shpërndaje dhe like nëse të pëlqen! Ndarjet dhe pëlqimet tuaja janë motivimi ynë i vazhdueshëm!