Article Directory
HestiaCP Serverski CPU skok? Potpuni vodič za optimizaciju PHP-FPM procesa!

Da li je CPU servera uvijek na 100%? Ventilator se divlje vrti? Da li se brzina otvaranja web stranice usporava?Krivac bi mogao biti php-fpm!
Nedavno sam otkrio chenweiliang.com Ovaj PHP bazen php-fpm Proces je ludo trošio CPU, a server se srušio!
Kako bih oživio server, isprobao sam niz metoda optimizacije i konačno uspio smanjiti korištenje CPU-a.
Sada, hajde da podelimo ovo Vodič za efikasnu optimizaciju! 🚀
1. Ograničite broj php-fpm procesa
php-fpm podrazumevane postavke moguneograničenoProces se stvara nekontrolirano, uzrokujući preopterećenje serverske procesorske jedinice.
Da bismo ga optimizirali, možemo modificirati parametre upravljanja procesom.
Proboj php-fpm Konfiguracijski fajlovi:
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
Upitajte PHP verziju koju je postavio HestiaCP
v-list-web-domain user domain.com
E.g:
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.
Pronađite i izmijenite sljedeće parametre:
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 后自动退出
Zatim restartujte php-fpm Da bi bio efikasan:
sudo systemctl restart php-fpm
✅ efekt: Ograničite broj procesa kako biste spriječili php-fpm da previše troši CPU resurse.
2. Omogućite OPCache (za poboljšanje performansi PHP-a)
PHP ponovo analizira kod svaki put kada se izvrši, što je gubitak resursa.
Rješenje? Omogućite OPCache i keširajte svoj PHP kod!
编辑 php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Dodajte ili izmijenite sljedeće:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Nakon spremanja, ponovo pokrenite PHP proces:
sudo systemctl restart php8.3-fpm
✅ efekt: Smanjite ponovljeno raščlanjivanje PHP koda, smanjite opterećenje CPU-a i poboljšajte efikasnost izvršavanja.
3. Ograničite maksimalno vrijeme izvršavanja PHP skripti
Ako PHP skripta radi predugo, CPU resursi će biti stalno zauzeti.
Postavljanje razumnog vremenskog perioda može spriječiti "tvrdoglave" procese da zauzmu server na duže vrijeme.
Proboj php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Izmijenite sljedeće parametre:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Zatim ponovo pokrenite PHP proces:
sudo systemctl restart php-fpm
✅ efekt: Spriječite dugotrajno pokretanje PHP procesa i smanjite rasipanje CPU resursa.
4. Provjerite MySQL Sporo upit
PHP-FPM ima veliko opterećenje,Može biti uzrokovano sporim SQL upitom!
Uključi MySQL Spor dnevnik upita, saznajte SQL izraze koji se zadržavaju.
Uredite MySQL konfiguracijski fajl:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Dodaj u:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Nakon spremanja, ponovo pokrenite MySQL:
sudo systemctl restart mysql
Zatim koristite mysqldumpslow Analizirajte spore upite:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ efekt: Saznajte dugotrajne SQL upite, optimizirajte performanse baze podataka i indirektno smanjite opterećenje PHP-a.
5. Ograničite korištenje Memcached resursa
Gledajući listu procesa, našao sam Potrošnja CPU-a Memcached procesa je 24.8%!
Može biti da je alokacija keša prevelika, što uzrokuje da CPU obrađuje veliku količinu podataka.
Prilagođavanje memcached Konfiguracija:
sudo nano /etc/memcached.conf
revidirati:
-m 32 # 限制 Memcached 内存使用 32MB
Zatim ponovo pokrenite:
sudo systemctl restart memcached
✅ efekt: Smanjite opterećenje CPU-a Memcached procesa i poboljšajte efikasnost keš memorije.
6. Omogućite Nginx za keširanje statičkih resursa
Mnogo puta PHP obrađuje zahtjeve koji sadrže veliki broj CSS, JS, slike, ali ovim fajlovima uopšte nije potrebna PHP analiza!
Rješenje? Koristite Nginx za keširanje statičkih resursa!
Uredite Nginx konfiguraciju:
sudo nano /etc/nginx/nginx.conf
Dodaj u:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Nakon spremanja, ponovo pokrenite Nginx:
sudo systemctl restart nginx
✅ efekt: Smanjite broj puta kada PHP obrađuje statičke datoteke i smanji upotrebu CPU-a.
7. Pronađite PHP skriptu koja koristi najviše CPU-a
Ako je CPU i dalje previsok nakon optimizacije, moguće je da neke PHP skripte rade divlje.
Koristite sljedeću naredbu da saznate PHP proces s najvećom upotrebom CPU-a:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Ako ustanovite da PHP skripta zauzima previše CPU-a, možete je direktno ubiti:
kill -9 PID
✅ efekt:Precizno identificirajte "loše jabuke" i spriječite PHP proces da zauzme CPU na duže vrijeme.
Sažetak: 7 načina za optimizaciju PHP-FPM-a
✅ Ograničite broj PHP-FPM procesa, kako bi se spriječilo preopterećenje procesora
✅ Omogući OPCache, smanjiti ponovljeno raščlanjivanje PHP koda
✅ Postavljanje PHP timeout-a, za sprečavanje dugotrajnog rada
✅ Provjera MySQL sporih upita, optimizirati performanse upita baze podataka
✅ Podesite Memcached memoriju, smanjujući opterećenje procesora
✅ Omogućite Nginx statičku keš memoriju, smanjujući opterećenje PHP raščlanjivanja
✅ Pronađite PHP skripte sa visokom potrošnjom CPU-a, precizna optimizacija
u zakljucku
Optimizacija servera je poput fitnesa, morate izvršiti precizna podešavanja i ne petljajte!
Nakon serije optimizacija, opterećenje CPU-a mog servera je palo 80% do 15%, web stranica se otvara duplo brže!
Ako vaš server ima slične probleme, isprobajte ove metode! 💪
???? Poduzmite akciju odmah! Optimizirajte svoj PHP-FPM i sačuvajte svoj server! ????
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "HestiaCP php-fpm proces zauzima puno CPU resursa, kako ga optimizirati? “, može vam biti od pomoći.
Dobrodošli da podijelite link ovog članka:https://www.chenweiliang.com/cwl-32490.html
