Adresár článkov
HestiaCP Nárast procesora servera? Kompletný sprievodca optimalizáciou procesu PHP-FPM!

Je CPU servera vždy na 100%? Divo sa točí ventilátor? Spomalí sa rýchlosť otvárania webových stránok?Vinníkom môže byť php-fpm!
Nedávno som objavil chenweiliang.com Tento fond PHP php-fpm Proces šialene spotreboval CPU a server spadol!
Aby som oživil server, vyskúšal som sériu optimalizačných metód a nakoniec sa mi podarilo znížiť využitie CPU.
Teraz sa o to podeľme Sprievodca efektívnou optimalizáciou! 🚀
1. Obmedzte počet procesov php-fpm
Predvolené nastavenia php-fpm môžuneobmedzenéProces sa vytvára nekontrolovateľne, čo spôsobuje preťaženie CPU servera.
Pre optimalizáciu môžeme upraviť parametre riadenia procesov.
打开 php-fpm Konfiguračné súbory:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Zmeňte verziu PHP na vašu, napríklad PHP8.3, a zmeňte ju na toto:
/etc/php/8.3/fpm/pool.d/www.conf
Dotaz na verziu PHP nastavenú HestiaCP
v-list-web-domain user domain.com
napríklad:
v-list-web-domain abc chenweiliang.com
Vo výstupe uvidíte niečo ako:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
To znamená, že stránka používa PHP 8.3.
Nájdite a upravte nasledujúce 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 后自动退出
Potom reštartujte php-fpm Aby to bolo efektívne:
sudo systemctl restart php-fpm
✅ účinok: Obmedzte počet procesov, aby ste zabránili tomu, aby php-fpm nadmerne spotrebovával zdroje CPU.
2. Povoliť OPCache (na zlepšenie výkonu PHP)
PHP opravuje kód zakaždým, keď je spustený, čo je plytvanie zdrojmi.
Riešenie? Povoľte OPCache a uložte svoj PHP kód do vyrovnávacej pamäte!
编辑 php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Pridajte alebo upravte nasledovné:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Po uložení reštartujte proces PHP:
sudo systemctl restart php8.3-fpm
✅ účinok: Znížte opakovanú analýzu kódu PHP, znížte zaťaženie procesora a zvýšte efektivitu vykonávania.
3. Obmedzte maximálnu dobu vykonávania PHP skriptov
Ak skript PHP beží príliš dlho, zdroje CPU budú neustále obsadené.
Nastavenie primeraného časového limitu môže zabrániť tomu, aby „tvrdohlavé“ procesy zaberali server na dlhú dobu.
打开 php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Upravte nasledujúce parametre:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Potom reštartujte proces PHP:
sudo systemctl restart php-fpm
✅ účinok: Zabráňte dlhodobému spusteniu procesov PHP a znížte plytvanie prostriedkami CPU.
4. Skontrolujte MySQL Pomalý dopyt
PHP-FPM má vysoké zaťaženie,Môže to byť spôsobené pomalým SQL dotazom!
开启 MySQL Pomalý denník dopytov, zistite SQL príkazy, ktoré sa bránia.
Upravte konfiguračný súbor MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Pridať do:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Po uložení reštartujte MySQL:
sudo systemctl restart mysql
Potom použite mysqldumpslow Analyzujte pomalé dopyty:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ účinok: Zistite časovo náročné SQL dotazy, optimalizujte výkon databázy a nepriamo znížte zaťaženie PHP.
5. Obmedzte využitie prostriedkov Memcached
Pri pohľade na zoznam procesov som našiel Proces Memcached Využitie procesora je 24.8 %!
Je možné, že alokácia vyrovnávacej pamäte je príliš veľká, čo spôsobí, že CPU spracuje veľké množstvo údajov.
调整 memcached Konfigurácia:
sudo nano /etc/memcached.conf
Revidovať:
-m 32 # 限制 Memcached 内存使用 32MB
Potom reštartujte:
sudo systemctl restart memcached
✅ účinok: Znížte zaťaženie CPU procesu Memcached a zvýšte efektivitu vyrovnávacej pamäte.
6. Povoľte Nginx ukladať statické zdroje do vyrovnávacej pamäte
PHP mnohokrát spracováva požiadavky, ktoré obsahujú veľké množstvo CSS, JS, obrázky, ale tieto súbory vôbec nepotrebujú analýzu PHP!
Riešenie? Použite Nginx na ukladanie statických zdrojov do vyrovnávacej pamäte!
Upravte konfiguráciu Nginx:
sudo nano /etc/nginx/nginx.conf
Pridať do:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Po uložení reštartujte Nginx:
sudo systemctl restart nginx
✅ účinok: Znížte počet, koľkokrát PHP spracováva statické súbory a znížte využitie procesora.
7. Nájdite PHP skript, ktorý využíva najviac CPU
Ak je CPU po optimalizácii stále príliš vysoké, môže sa stať, že niektoré PHP skripty bežia divoko.
Na zistenie procesu PHP s najvyšším využitím CPU použite nasledujúci príkaz:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Ak zistíte, že skript PHP zaberá príliš veľa CPU, môžete ho priamo zabiť:
kill -9 PID
✅ účinok:Presne identifikujte „zlé jablká“ a zabráňte tomu, aby proces PHP zaberal CPU na dlhú dobu.
Zhrnutie: 7 spôsobov optimalizácie PHP-FPM
✅ Obmedzte počet procesov PHP-FPM, aby sa zabránilo preťaženiu procesora
✅ Povoliť OPCache, znížiť opakovanú analýzu kódu PHP
✅ Nastavenie časového limitu PHP, aby sa zabránilo dlhodobej prevádzke
✅ Kontrola pomalých dopytov MySQLoptimalizovať výkon databázových dotazov
✅ Upravte pamäť Memcachedzníženie zaťaženia procesora
✅ Povoliť statickú vyrovnávaciu pamäť Nginx, čím sa zníži zaťaženie analýzy PHP
✅ Nájdite skripty PHP s vysokým využitím procesora, precízna optimalizácia
na záver
Optimalizácia servera je ako fitness, musíte robiť presné úpravy a nezaháľať!
Po sérii optimalizácií sa zaťaženie procesora môjho servera znížilo 80 % až 15 %, stránka sa otvára dvakrát rýchlejšie!
Ak má váš server podobné problémy, vyskúšajte tieto metódy! 💪
???? Konajte teraz! Optimalizujte svoj PHP-FPM a uložte svoj server! 🚀
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) zdieľaný „Proces HestiaCP php-fpm zaberá veľa zdrojov CPU, ako ho optimalizovať? “, môže vám to pomôcť.
Vitajte pri zdieľaní odkazu na tento článok:https://www.chenweiliang.com/cwl-32490.html
