Drejtoria e artikujve
A keni hasur ndonjëherë në këtë situatë? Uebsajti juaj ngadalësohet papritur, ose madje jep një gabim 500. Rinisni PHP-FPM e rikthen atë në normalitet , por problemi rishfaqet pas një kohe? Është jashtëzakonisht frustruese!
Pse ndodh kjo? Në fakt, kjo zakonisht shkaktohet nga konfigurimi jo i duhur i grupit të proceseve PHP-FPM ose nga burime të pamjaftueshme të serverit . Sot, ne do ta optimizojmë plotësisht PHP-FPM nën HestiaCP për të siguruar stabilitetin e fortë të faqes suaj të internetit!
Arsyeja kryesore pse PHP-FPM është e mbingarkuar
PHP-FPM është menaxheri i proceseve për PHP , përgjegjës për trajtimin e kërkesave dinamike. Konfigurimi i papërshtatshë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
A i shihni këto procese duke përdorur më shumë se 70% të CPU-së? Nëse kjo ndodh shpesh, atëherë patjetër që ka diçka të gabuar me PHP-FPM-në tuaj!
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.5, 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.5 Kjo tregon që faqja e internetit përdor PHP 8.5.
Le të hedhim një vështrim në konfigurimin tuaj PHP-FPM:
[chenweiliang.com]
listen = /run/php/php8.5-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.
www.conf: "Pishina universale e burimeve" e integruar e sistemit.
Pas instalimit të PHP-FPM, sistemi automatikisht do t'ju ofrojë një... www.conf dosje.
e sajPozicionimiËshtë shumë e thjeshtë - është thjesht një grup procesesh parazgjedhur që funksionon menjëherë, zakonisht i lidhur me... www-data Shkarkim nga përdoruesi.
Ky lloj grupi është veçanërisht i përshtatshëm për mjedise me një vendndodhje të vetme: konfigurimi është i lehtë dhe parametrat janë të gjithë shabllone gjenerike, siç janë:
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5
Nëse hostoni vetëm një faqe interneti, mund ta përdorni atë drejtpërdrejt dhe me besueshmëri pa ndonjë telashe shtesë.
etufo.org.conf: Pishinë e personalizuar
Pasi të kesh disa faqe interneti, nuk mund t'i mbash të gjithë të ngjeshur në të njëjtën grup.
Në këtë pikë, HestiaCP do të krijojë automatikisht një grup të veçantë për secilën faqe, për shembull... etufo.org.confSpecializuar për emrat e domeneve etufo.org 服务.
Mënyra e zakonshme për të luajtur është:
- Ndryshoni përdoruesit dhe grupet:
user = etufo,group = etufo - Monitorim i pavarur:
listen = /run/php/etufo.sock - Rregullimi i numrit të proceseve siguron stabilitet të fortë si shkëmbi edhe në kushte të njëkohshme të lartë.
- Skedarët e veçantë të regjistrit e bëjnë zgjidhjen e problemeve më të qartë.
Përfitimet janë të dukshme: izolim i sigurt . Edhe nëse një faqe interneti është e kompromentuar, të tjerat mbeten të paprekura.
dummy.conf: skedar artificial
dummy.conf Këto zakonisht janë shembuj ose shabllone të ofruara nga sistemi.
Nuk do të funksionojë në të vërtetë nëse nuk e modifikoni dhe aktivizoni manualisht.
Rëndësia e tij është më shumë si një "manual përdorimi", që ju tregon se si të shkruani një konfigurim të ri të pishinës.
Pse ta ndajmë pishinën?
- 安全 性Përdorni përdorues të ndryshëm për faqe të ndryshme për të shmangur lejet që bien ndesh me njëra-tjetrën.
- 性能优化Numri i proceseve mund të rregullohet individualisht për secilën pishinë, duke lejuar rregullime fleksibile bazuar në kërkesën e trafikut.
- IzolimRegjistrat, gabimet dhe adresat e dëgjimit janë të gjitha të ndara, duke e bërë më të lehtë zgjidhjen e problemeve.
Për shembull, edhe nëse www.conf rrëzohet, etufo.org.conf do të vazhdojë të funksionojë normalisht dhe nuk do ta ndalojë të gjithë serverin.
实际场景
- Server me një faqe të vetmewww.conf është i mjaftueshëm.
- Server shumëfaqëshÇdo faqe interneti ka skedarin e vet të pavarur .conf, siç është etufo.org.conf.
- dummy.confVetëm për referencë, nuk rekomandohet.
Krahasimi i Konfigurimit
www.conf (grupi i parazgjedhur)
[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5
etufo.org.conf (Pishinë e Personalizuar)
[etufo.org]
user = etufo
group = etufo
listen = /run/php/etufo.sock
pm = dynamic
pm.max_children = 20
access.log = /var/log/php-fpm/etufo.access.log
Dallimet kryesore janë: identiteti i përdoruesit, adresa e dëgjimit dhe numri i proceseve.
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ë dynamic, 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 parandalon që disa skripte PHP që konsumojnë shumë CPU të shkaktojnë bllokim të serverit.
Pas ruajtjes, rinisni procesin PHP:
sudo systemctl restart php8.3-fpmOptimizoni PHP-FPM bazuar në konfigurimin e VPS
Shembull i konfigurimit të VPS:
- Përshkrim: VPS 3 NVMe
- Hapësira e diskut: 300 GB
- Bërthamat e CPU-së: 8
- RAM: 24 GB
Bazuar në konfigurimin tuaj VPS ( 8 bërthama CPU, 24 GB RAM ), burimet e serverit tuaj janë më se të mjaftueshme. Për PHP-FPM, 24 GB RAM ju lejon të konfiguroni një numër shumë të lartë procesesh të njëkohshme.
Në një mjedis prodhimi, ne zakonisht ndajmë memorie të mjaftueshme (p.sh. 8GB-12GB) për vetë sistemin, bazat e të dhënave Apache (siç është MySQL /MariaDB) dhe memorjet e përkohshme (siç është Redis / Memcached ), duke lënë pjesën e mbetur prej 12GB-16GB të memories që t'i ndahet plotësisht PHP-FPM.
Bazuar në një përdorim mesatar të memories prej 40MB-60MB për proces PHP , 1GB memorie mund të ekzekutojë afërsisht 16-25 procese.
Më poshtë është një konfigurim FPM me performancë të lartë dhe me njëkohësi të lartë, i përshtatur për ju , i cili mund ta përmirësojë shumë kapacitetin e WordPress dhe ta parandalojë atë nga rrëzimi për shkak të rritjeve të papritura të trafikut:
pm = dynamic
; 允许的最大 PHP 进程数(12GB 内存 / 40MB ≈ 300)
; 8核CPU搭配300个进程,可以轻松应对极高并发,且不至于让内存溢出
pm.max_children = 300
; 启动时创建的初始进程数(CPU核心数 * 4)
pm.start_servers = 32
; 维持的最小空闲进程数(服务器空闲时保留的进程,保证随时响应)
pm.min_spare_servers = 16
; 维持的最大空闲进程数(超过这个数量的空闲进程会被释放)
pm.max_spare_servers = 64
; 每个进程处理1000个请求后自动重启,高配置服务器可适当调大,有效防止WP插件内存泄露
pm.max_requests = 1000
; 单个请求最大执行时间,超时60秒强杀,防止死锁卡死
request_terminate_timeout = 60s
; 慢日志路径及触发阈值(请求超过5秒则记录,用于排查性能瓶颈)
slowlog = /var/log/php8.5-fpm.log.slow
request_slowlog_timeout = 5s
💡 Pse ky konfigurim?
pm.max_children = 300Ky është një optimizim thelbësor. Konfigurimi juaj i mëparshëm prej 50 procesesh ishte shumë konservator për 24 GB memorie. Kur hasni rritje të papritura të trafikut (ose robotë që mbushin sfondin), 50 procese do të mbingarkoheshin menjëherë, duke shkaktuar ndërprerje të lidhjes. Rritja e tij në 300 mund ta përmirësojë kapacitetin e përpunimit të njëkohshëm të serverit tuaj disa herë.pm.start_servers/ `min_spare_serversMeqenëse keni 8 bërthama CPU, fillimisht dhe normalisht mund të mbani më shumë procese joaktive, duke përfituar nga avantazhi i shumë-bërthamave në mënyrë që kërkesat e reja të hapen menjëherë pa pritur krijimin e procesit.pm.max_requests = 1000Rriteni nga 500 në 1000. Memoria juaj është e madhe dhe proceset nuk kanë nevojë të rinisën shpesh. Rritja në 1000 mund të zvogëlojë konsumin e CPU-së të shkaktuar nga shkatërrimi dhe krijimi i shpeshtë i proceseve.
Shikoni regjistrin e ngadaltë:
tail -f /var/log/php8.5-fpm.log.slowtail -f /var/log/php8.4-fpm.log.slow
Pasi të keni bërë ndryshimet, mos harroni të rinisni shërbimin PHP-FPM që ndryshimet të hyjnë në fuqi.
systemctl restart php8.5-fpmAktivizo monitorimin e statusit PHP-FPM për të mbajtur gjurmët e progresit në çdo kohë
Aktivizimi i monitorimit të proceseve PHP-FPM ju lejon të shihni numrin e proceseve aktive dhe statusin e kërkesës në pritje në çdo kohë , duke parandaluar mbingarkesën 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.5-fpm restart
Po sikur problemi të vazhdojë? Optimizimi i mëtejshëm!
Nëse hasni herë pas here një gabim 500 pasi të keni ndjekur optimizimet e mësipërme , 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.5-opcache -y
Pastaj redakto php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
- opcache.validate_timestamps=0
- Çaktivizo zbulimin në kohë realeZvogëloni hyrjet/daljet e sistemit të skedarëve dhe përmirësoni performancën.
Megjithatë, kjo do të thotë që duhet ta pastroni manualisht memorien e përkohshme (të rinisni shërbimin PHP) pas modifikimit të skedarëve PHP.
Pas modifikimit të konfigurimit, duhet të rinisni shërbimin PHP që ndryshimet të hyjnë në fuqi.
sudo systemctl restart php<版本>-fpmEfekti? 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! 💪🚀
Nëse ende dëshironi të mësoni më shumë rreth personalizimit të shablloneve PHP-FPM me HestiaCP, atëherë ky artikull do t'ju japë një kuptim më të thellë:
👉 Shabllon PHP-FPM i personalizuar HestiaCP: Sekretet e Optimizimit të Performancës PHP 8.5 ▼
Në këtë përmbajtje, do të shihni:
- Teknikat e optimizimit me paralelizëm të lartë: Si të përmirësohet shpejtësia e reagimit përmes konfigurimit të arsyeshëm të procesit.
- Zgjidhje për izolimin e sigurisë: Shmangni rreziqet e aksesit ndërfaqësor dhe siguroni stabilitetin e llogarisë.
- Logjet dhe monitorimi: Përdorni log-e të ngadalta për të gjetur pengesat dhe për të optimizuar vazhdimisht performancën e faqes së internetit.
Shpresojmë që artikulli "Mbingarkesa e PHP-FPM-së së HestiaCP? Gabim 500 i faqes dinamike të internetit? Kjo metodë optimizimi do të tregojë rezultate të menjëhershme!", i ndarë në blogun e Chen Weiliang ( https://www.chenweiliang.com/ ), do t'ju jetë i dobishëm.
Ndihuni të lirë të ndani lidhjen e këtij artikulli: https://www.chenweiliang.com/cwl-32512.html

