Imenik članaka
- 1 Osnovni razlog zašto je PHP-FPM preopterećen
- 2 PHP-FPM optimizacija skupa procesa (podešavanje osnovnih parametara)
- 3 Omogućite praćenje statusa PHP-FPM-a kako biste pratili napredak u bilo kojem trenutku
- 4 Optimizirajte PHP-FPM zapisnike za brzo rješavanje problema
- 5 Redovito ponovno pokrenite PHP-FPM kako biste spriječili curenje memorije
- 6 Što ako se problem nastavi? Daljnja optimizacija!
- 7 Sažetak: Optimizirajte PHP-FPM i web stranica se više neće rušiti!
Jeste li se ikada susreli s ovom situacijom?Pristup web stranici iznenada je usporen ili je čak rezultirao pogreškom 500. Nakon ponovnog pokretanja PHP-FPM-a, vratio se u normalu., ali problem se nakon nekog vremena ponovno javlja? Ovo je tako frustrirajuće!
Zašto se ovo događa?Zapravo, to je običnoSkup PHP-FPM procesa nije pravilno konfiguriran ili resursi poslužitelja nisu dovoljni.uzrokovano. Danas ćemo temeljito optimizirati HestiaCP PHP-FPM ispod haube čini web stranicu stabilnom poput stijene!
Osnovni razlog zašto je PHP-FPM preopterećen
PHP-FPM je aUpravitelj procesa, koji je odgovoran za obradu dinamičkih zahtjeva. Ako konfiguracija nije razumna, to može dovesti do:
- Resursi poslužitelja su iscrpljeni, zbog čega PHP-FPM ne može odgovoriti na nove zahtjeve na vrijeme;
- Premalo procesa, kada se promet naglo poveća, ne može se obraditi na vrijeme;
- Korištenje procesa je preveliko, uzrokujući eksplozivno opterećenje CPU-a.

Kako znati je li PHP-FPM preopterećen?
mogu koristiti top Ili htop Naredba za prikaz upotrebe procesora i memorije:
top -c
Ako vidite informacije o procesu slične sljedećoj, to znači da PHP-FPM radi pod velikim opterećenjem:
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
Vidite kako ti procesi zauzimaju više od 70% CPU-a? Ako se to često događa, vaš PHP-FPM Mora postojati problem!
Dakle, kako možemo optimizirati PHP-FPM konfiguraciju tako da poslužitelj više ne bude preopterećen?
PHP-FPM optimizacija skupa procesa (podešavanje osnovnih parametara)
Prvo, otvorite php-fpm Konfiguracijske datoteke:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Promijenite na svoju PHP verziju, kao što je PHP8.3, i promijenite je u ovo:
/etc/php/8.3/fpm/pool.d/www.conf
Upit za verziju PHP-a koju je postavio HestiaCP
v-list-web-domain user domain.com
npr:
v-list-web-domain abc chenweiliang.com
U izlazu ćete vidjeti nešto poput:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
To znači da web stranica koristi PHP 8.3.
Pogledajmo vašu PHP-FPM konfiguraciju:
[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
Možete vidjeti da je vaš pm Onaj koji se koristi je ondemand,Iako može smanjiti korištenje resursa tijekom vremena mirovanja, kada se promet iznenada poveća, proces možda neće moći odgovoriti na vrijeme., što rezultira pogreškom od 500.
1. Podesite parametre skupa PHP-FPM procesa
Ako konfiguracija koristi dynamicOvo je metoda prethodnog pokretanja nekih radnih procesa i njihovog dinamičkog prilagođavanja prema količini zahtjeva, što može brže reagirati kada se količina zahtjeva naglo poveća.
Za web stranice s određenom količinom prometa preporučuje se korištenje pm = dynamicJer može održavati određeni broj neaktivnih procesa i izbjeći 500 pogrešaka tijekom visoke konkurentnosti.
Preporučuje se korištenje samo kada je volumen pristupa izuzetno nizak, a memorijski resursi ograničeni. pm = ondemand Za uštedu resursa.
Predlaže se promijeniti u ondemand, i optimizirati pm.max_children I ostali parametri:
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 后自动退出
Zašto to želite ovako promijeniti?
pm = dynamic: Fleksibilnije dodijelite procese kako biste izbjegli čekanje zahtjeva koje može uzrokovati ondemand;pm.max_children = 16: Spriječiti 500 pogrešaka uzrokovanih premalim brojem procesa;pm.start_servers = 5: Izbjegavajte sporo pokretanje procesa;pm.max_requests = 3000:Sprječavanje curenja memorije, redovito reciklirajte proces.
2. Ograničite vrijeme izvršavanja PHP skripti kako biste spriječili dugoročnu zauzetost
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Ovo može spriječiti nekePHP skripte koje koriste previše CPU-a mogu srušiti vaš poslužitelj.
Nakon spremanja ponovno pokrenite PHP proces:
sudo systemctl restart php8.3-fpmOmogućite praćenje statusa PHP-FPM-a kako biste pratili napredak u bilo kojem trenutku
Omogućite praćenje PHP-FPM procesa i pogledajte ga u bilo kojem trenutkuTrenutačni broj aktivnih procesa i status čekanja zahtjeva, kako biste izbjegli preopterećenje poslužitelja.
在 php-fpm.conf Dodano u:
pm.status_path = /status
Zatim, Nginx konfiguracija:
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;
}
Na ovaj način možete http://yourdomain.com/status Provjerite PHP-FPM na djelu!
Optimizirajte PHP-FPM zapisnike za brzo rješavanje problema
在 php-fpm.conf Dodatak:
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 的脚本记录到日志
Na ovaj način, kad god se pojavi greška 500, možete izravno pregledati dnevnik:
tail -f /var/log/php-fpm/error.log
Pogledajte javlja li PHP pogrešku, kao što je out of memory,script execution timeout 等.
Redovito ponovno pokrenite PHP-FPM kako biste spriječili curenje memorije
sposoban proći cron Redovito ponovno pokrenite PHP-FPM kako biste spriječili da dugotrajni procesi uzrokujuCurenje memorije.
crontab -e
Dodajte sljedeći planirani zadatak za automatsko ponovno pokretanje PHP-FPM-a u 3 ujutro svaki dan:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Što ako se problem nastavi? Daljnja optimizacija!
Ako i dalje slijedite gornju optimizacijuPovremeno se dogodi 500 grešaka, možete nastaviti sa sljedećim optimizacijama:
1. Omogućite OPcache za poboljšanje učinkovitosti izvršavanja PHP-a
Ako OPcache još nije omogućen, možete ga instalirati ovako (koristeći Ubuntu kao primjer):
sudo apt install php8.3-opcache -y
Zatim uredite php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Učinak? Brzina izvršavanja PHP stranice znatno je poboljšana!
2. Optimizacija Nginx konfiguracije
Provjerite jesu li parametri povezani s Nginxom razumni, kao što je fastcgi_read_timeout Prilagodite ga na odgovarajući način kako biste izbjegli prekidanje PHP skripti od strane Nginxa zbog dugog vremena izvršavanja:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Sažetak: Optimizirajte PHP-FPM i web stranica se više neće rušiti!
Koje smo prilagodbe napravili nakon ove optimizacije?
✅ Optimiziranje baze procesa PHP-FPM,koristiti ondemandI optimizirati pm.max_children parametar;
✅ Ograničavanje vremena izvršavanja PHP skripti, za sprječavanje dugotrajne okupacije CPU-a;
✅ Omogući PHP-FPM nadzor, pregled opterećenja procesa u stvarnom vremenu;
✅ Optimiziranje PHP-FPM zapisa, brzo otkloniti 500 grešaka;
✅ Redovito ponovno pokrenite PHP-FPM, spriječiti curenje memorije;
✅ Omogući OPcache, poboljšati učinkovitost izvršavanja PHP-a;
✅ Optimiziranje Nginx konfiguracije, kako biste izbjegli probleme s istekom vremena.
Nakon ove optimizacije, opterećenje PHP-FPM-a bit će znatno smanjeno, a rad web stranice bit će stabilniji! 🔥
Idi probaj sada! 💪🚀
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "HestiaCP PHP-FPM opterećenje je previsoko? Dinamička web stranica 500 greška? Ova optimizacija stupa na snagu odmah! “, moglo bi vam biti od pomoći.
Dobrodošli da podijelite vezu ovog članka:https://www.chenweiliang.com/cwl-32512.html
Za otključavanje još skrivenih trikova🔑, dobrodošli da se pridružite našem Telegram kanalu!
Podijelite i lajkajte ako vam se sviđa! Vaša dijeljenja i lajkovi naša su daljnja motivacija!