Straipsnių katalogas
HestiaCP Serverio procesoriaus šuolis? Išsamus PHP-FPM proceso optimizavimo vadovas!

Ar serverio CPU visada veikia 100%? Ventiliatorius sukasi pašėlusiai? Ar sulėtėja svetainės atidarymo greitis?Kaltininkas gali būti php-fpm!
Neseniai atradau chenweiliang.com Šis PHP baseinas php-fpm Procesas beprotiškai suvalgė procesorių, o serveris sugedo!
Norėdamas atgaivinti serverį, išbandžiau keletą optimizavimo metodų ir galiausiai pavyko sumažinti procesoriaus naudojimą.
Dabar pasidalinkime tuo Veiksmingo optimizavimo vadovas! 🚀
1. Apribokite php-fpm procesų skaičių
php-fpm numatytieji nustatymai galineribotasProcesas sukuriamas nekontroliuojamai, todėl serverio CPU perkraunamas.
Norėdami jį optimizuoti, galime modifikuoti procesų valdymo parametrus.
įjungti php-fpm Konfigūracijos failai:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Pakeiskite į savo PHP versiją, pvz., PHP8.3, ir pakeiskite ją į šią:
/etc/php/8.3/fpm/pool.d/www.conf
Užklausti HestiaCP nustatytą PHP versiją
v-list-web-domain user domain.com
E.g .:
v-list-web-domain abc chenweiliang.com
Išvestyje pamatysite kažką panašaus į:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Tai reiškia, kad svetainė naudoja PHP 8.3.
Raskite ir pakeiskite šiuos parametrus:
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 后自动退出
Tada paleiskite iš naujo php-fpm Kad jis būtų efektyvus:
sudo systemctl restart php-fpm
✅ Efektas: apribokite procesų skaičių, kad php-fpm nenaudotų procesoriaus išteklių.
2. Įgalinkite OPCache (siekdami pagerinti PHP našumą)
PHP iš naujo peržiūri kodą kiekvieną kartą, kai jis vykdomas, o tai yra išteklių švaistymas.
Sprendimas? Įgalinkite OPCache ir išsaugokite savo PHP kodą talpykloje!
Taisyti php.ini dokumentas:
sudo nano /etc/php/*/fpm/php.ini
Pridėkite arba pakeiskite šiuos dalykus:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Išsaugoję iš naujo paleiskite PHP procesą:
sudo systemctl restart php8.3-fpm
✅ Efektas: Sumažinkite kartotinį PHP kodo analizavimą, sumažinkite procesoriaus naštą ir pagerinkite vykdymo efektyvumą.
3. Apribokite maksimalų PHP scenarijų vykdymo laiką
Jei PHP scenarijus veikia per ilgai, procesoriaus ištekliai bus nuolat užimti.
Nustačius protingą skirtąjį laikotarpį, „užsispyrę“ procesai ilgą laiką neužims serverio.
įjungti php.ini dokumentas:
sudo nano /etc/php/*/fpm/php.ini
Pakeiskite šiuos parametrus:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Tada iš naujo paleiskite PHP procesą:
sudo systemctl restart php-fpm
✅ Efektas: Neleiskite PHP procesams veikti ilgą laiką ir sumažinkite procesoriaus išteklių švaistymą.
4. Patikrinkite MySQL Lėta užklausa
PHP-FPM turi didelę apkrovą,Tai gali sukelti lėta SQL užklausa!
开启 MySQL Lėtas užklausų žurnalas, sužinokite SQL teiginius, kurie sulaiko.
Redaguokite MySQL konfigūracijos failą:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Pridėti prie:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Išsaugoję iš naujo paleiskite MySQL:
sudo systemctl restart mysql
Tada naudoti mysqldumpslow Analizuokite lėtas užklausas:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ Efektas: sužinokite daug laiko reikalaujančias SQL užklausas, optimizuokite duomenų bazės našumą ir netiesiogiai sumažinkite PHP apkrovą.
5. Apribokite talpyklos išteklių naudojimą
Žvelgdamas į procesų sąrašą radau Atmintyje išsaugoto proceso procesoriaus naudojimas yra 24.8%!
Gali būti, kad talpyklos paskirstymas yra per didelis, todėl CPU apdoroja didelį duomenų kiekį.
调整 memcached Konfigūracija:
sudo nano /etc/memcached.conf
Peržiūra:
-m 32 # 限制 Memcached 内存使用 32MB
Tada paleiskite iš naujo:
sudo systemctl restart memcached
✅ Efektas: Sumažinkite „Memcached“ proceso procesoriaus apkrovą ir pagerinkite talpyklos efektyvumą.
6. Įgalinkite Nginx talpykloje saugoti statinius išteklius
Daug kartų PHP apdoroja užklausas, kuriose yra daug CSS, JS, vaizdai, tačiau šiems failams iš viso nereikia analizuoti PHP!
Sprendimas? Naudokite Nginx statiniams ištekliams talpinti!
Redaguoti Nginx konfigūraciją:
sudo nano /etc/nginx/nginx.conf
Pridėti prie:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Išsaugoję iš naujo paleiskite „Nginx“:
sudo systemctl restart nginx
✅ Efektas: Sumažinkite statinių failų apdorojimo kartų skaičių ir sumažinkite procesoriaus naudojimą.
7. Raskite PHP scenarijų, kuris naudoja daugiausiai procesoriaus
Jei po optimizavimo CPU vis dar per aukštas, gali būti, kad kai kurie PHP scenarijai veikia beprotiškai.
Naudokite šią komandą, kad sužinotumėte PHP procesą su didžiausiu procesoriaus naudojimu:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Jei pastebėsite, kad PHP scenarijus užima per daug procesoriaus, galite jį nužudyti tiesiogiai:
kill -9 PID
✅ Efektas:Tiksliai identifikuokite „blogus obuolius“ ir neleiskite PHP procesui užimti procesoriaus ilgą laiką.
Santrauka: 7 būdai optimizuoti PHP-FPM
✅ Apribokite PHP-FPM procesų skaičių, kad išvengtumėte procesoriaus perkrovos
✅ Įgalinti OPCache, sumažinkite kartotinį PHP kodo analizavimą
✅ PHP skirtojo laiko nustatymas, kad būtų išvengta ilgalaikio veikimo
✅ Tikrinamos lėtos MySQL užklausos, optimizuoti duomenų bazės užklausos našumą
✅ Sureguliuokite atmintyje išsaugotą atmintį, sumažinant procesoriaus apkrovą
✅ Įgalinti Nginx statinę talpyklą, sumažinant PHP analizavimo naštą
✅ Raskite daug procesoriaus naudojimo PHP scenarijus, tikslus optimizavimas
Apibendrinant
Serverio optimizavimas yra kaip kūno rengyba, reikia tiksliai sureguliuoti ir nesijaudinti!
Po daugybės optimizacijų mano serverio procesoriaus apkrova sumažėjo 80% iki 15%, svetainė atsidaro dvigubai greičiau!
Jei jūsų serveris turi panašių problemų, išbandykite šiuos metodus! 💪
👉 Imkitės veiksmų dabar! Optimizuokite savo PHP-FPM ir išsaugokite serverį! ????
Hope Chen Weiliang tinklaraštis ( https://www.chenweiliang.com/ ) pasidalino „HestiaCP php-fpm procesas užima daug procesoriaus resursų, kaip jį optimizuoti? “, tai gali būti jums naudinga.
Kviečiame pasidalinti šio straipsnio nuoroda:https://www.chenweiliang.com/cwl-32490.html
