Artikola Adresaro
HestiaCP Servila CPU-pikilo? Kompleta gvidilo por optimumigi la PHP-FPM-procezon!

Ĉu la servila CPU estas ĉiam 100%? La ventumilo turniĝas sovaĝe? Ĉu la retejo malferma rapideco malrapidiĝas?La kulpulo eble estas php-fpm!
Mi ĵus malkovris chenweiliang.com Ĉi tiu PHP-naĝejo php-fpm La procezo freneze konsumis la procesoron, kaj la servilo kraŝis!
Por revivigi la servilon, mi provis serion da optimumigaj metodoj kaj fine sukcesis redukti la CPU-uzadon.
Nun, ni dividu ĉi tion Gvidilo pri Efika Optimumigo! 🚀
1. Limigu la nombron da php-fpm-procezoj
php-fpm defaŭltaj agordoj povassenlimaLa procezo estas kreita neregeble, igante la servilan CPU superŝarĝi.
Por optimumigi ĝin, ni povas modifi la parametrojn de procezadministrado.
ŝalti php-fpm Agordaj dosieroj:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Ŝanĝu al via PHP-versio, ekzemple PHP8.3, kaj ŝanĝu ĝin al ĉi tio:
/etc/php/8.3/fpm/pool.d/www.conf
Pridemandi la PHP-version agorditan de HestiaCP
v-list-web-domain user domain.com
Ekz-e:
v-list-web-domain abc chenweiliang.com
En la eligo, vi vidos ion kiel:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Ĉi tio signifas, ke la retejo uzas PHP 8.3.
Trovu kaj modifi la sekvajn parametrojn:
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 后自动退出
Tiam rekomencu php-fpm Por fari ĝin efika:
sudo systemctl restart php-fpm
✅ Efiko: Limigu la nombron da procezoj por malhelpi php-fpm tro konsumi CPU-rimedojn.
2. Ebligu OPCache (por plibonigi PHP-agadon)
PHP revizias la kodon ĉiufoje kiam ĝi estas ekzekutita, kio estas malŝparo de rimedoj.
La solvo? Ebligu OPCache kaj konservu vian PHP-kodon!
redakti php.ini dokumento:
sudo nano /etc/php/*/fpm/php.ini
Aldonu aŭ modifi la jenajn:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Post konservado, rekomencu la PHP-procezon:
sudo systemctl restart php8.3-fpm
✅ Efiko: Reduktu ripetan analizadon de PHP-kodo, reduktu CPU-ŝarĝon kaj plibonigu ekzekut-efikecon.
3. Limigu la maksimuman ekzekuttempon de PHP-skriptoj
Se PHP-skripto funkcias tro longe, CPU-resursoj estos kontinue okupataj.
Agordo de akceptebla tempodaŭro povas malhelpi "obstinajn" procezojn okupi la servilon dum longa tempo.
ŝalti php.ini dokumento:
sudo nano /etc/php/*/fpm/php.ini
Modifi la sekvajn parametrojn:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Tiam rekomencu la PHP-procezon:
sudo systemctl restart php-fpm
✅ Efiko: Malhelpi PHP-procezojn funkcii dum longa tempo kaj redukti CPU-rimedonmalŝparon.
4. Kontrolu MySQL Malrapida demando
PHP-FPM havas altan ŝarĝon,Ĝi povas esti kaŭzita de la malrapida SQL-demando!
开启 MySQL Malrapida enketo-protokolo, eksciu la SQL-deklarojn, kiuj retenas.
Redaktu la MySQL-agordan dosieron:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Aldoni al:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Post konservado, rekomencu MySQL:
sudo systemctl restart mysql
Tiam uzu mysqldumpslow Analizu malrapidajn demandojn:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ Efiko: Eltrovu temporabajn SQL-demandojn, optimumigu datumbazan rendimenton kaj nerekte reduktu PHP-ŝarĝon.
5. Limigi la uzadon de rimedoj de Memcached
Rigardante la procezoliston, mi trovis Memcached-proceza CPU-uzado estas 24.8%!
Povas esti, ke la kaŝmemoro-atribuo estas tro granda, igante la CPU prilabori grandan kvanton da datumoj.
Alĝustigo memcached Agordo:
sudo nano /etc/memcached.conf
Revizio:
-m 32 # 限制 Memcached 内存使用 32MB
Tiam rekomencu:
sudo systemctl restart memcached
✅ Efiko: Reduktu la CPU-ŝarĝon de la Memcached-procezo kaj plibonigu kaŝmemorefikecon.
6. Ebligu Nginx por konservi senmovajn rimedojn
Multaj fojoj, PHP procesas petojn, kiuj enhavas grandan nombron da CSS, JS, bildoj, sed ĉi tiuj dosieroj tute ne bezonas PHP-an analizon!
La solvo? Uzu Nginx por konservi senmovajn rimedojn!
Redaktu Nginx-agordon:
sudo nano /etc/nginx/nginx.conf
Aldoni al:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Post konservado, rekomencu Nginx:
sudo systemctl restart nginx
✅ Efiko: Reduktu la nombron da fojoj kiam PHP prilaboras senmovajn dosierojn kaj reduktu CPU-uzadon.
7. Trovu la PHP-skripton kiu uzas la plej CPU
Se la CPU ankoraŭ estas tro alta post optimumigo, eble iuj PHP-skriptoj funkcias sovaĝe.
Uzu la sekvan komandon por ekscii la PHP-procezon kun la plej alta CPU-uzado:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Se vi trovas, ke PHP-skripto okupas tro da CPU, vi povas mortigi ĝin rekte:
kill -9 PID
✅ Efiko:Precize identigu la "malbonajn pomojn" kaj malhelpi la PHP-procezon okupi la CPU dum longa tempo.
Resumo: 7 manieroj optimumigi PHP-FPM
✅ Limigu la nombron da PHP-FPM-procezoj, por malhelpi CPU-troŝarĝon
✅ Ebligu OPCache, reduktu ripetan analizadon de PHP-kodo
✅ Agordi PHP-tempon, por malhelpi longtempan operacion
✅ Kontrolante MySQL-malrapidajn demandojn, optimumigi datumbazan demandan rendimenton
✅ Alĝustigu Memcached Memoron, reduktante CPU-ŝarĝon
✅ Ebligu la statikan kaŝmemoron de Nginx, reduktante la PHP-analizan ŝarĝon
✅ Trovu altan CPU-uzadon PHP-skriptojn, preciza optimumigo
Konklude
Servila optimumigo estas kiel taŭgeco, vi devas fari precizajn ĝustigojn kaj ne fuŝi!
Post serio de optimumigoj, mia servila CPU-ŝarĝo falis de 80% ĝis 15%, la retejo malfermiĝas duoble pli rapide!
Se via servilo havas similajn problemojn, provu ĉi tiujn metodojn! 💪
???? Agu nun! Optimumugu vian PHP-FPM kaj konservu vian servilon! 🚀
Hope Chen Weiliang Blogo ( https://www.chenweiliang.com/ ) komuna "HestiaCP php-fpm-procezo okupas multajn CPU-rimedojn, kiel optimumigi ĝin? ”, ĝi povas esti helpema al vi.
Bonvenon dividi la ligon de ĉi tiu artikolo:https://www.chenweiliang.com/cwl-32490.html
