Artikel Directory
HestiaCP Server CPU stigning? En komplet guide til optimering af PHP-FPM processen!

Er serverens CPU altid på 100%? Ventilatoren snurrer vildt? Er hjemmesidens åbningshastighed langsommere?Synderen kan være php-fpm!
opdagede jeg for nylig chenweiliang.com Denne PHP pool php-fpm Processen åd CPU'en fuldstændig op, og serveren crashte!
For at genoplive serveren prøvede jeg en række optimeringsmetoder og lykkedes endelig med at reducere CPU-forbruget.
Lad os nu dele dette Effektiv optimeringsvejledning! 🚀
1. Begræns antallet af php-fpm-processer
php-fpm standardindstillinger kan evtubegrænsetProcessen skabes ukontrolleret, hvilket får server-CPU'en til at overbelaste.
For at optimere det kan vi ændre processtyringsparametrene.
打开 php-fpm Konfigurationsfiler:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Skift til din PHP-version, f.eks. PHP8.3, og ændr den til denne:
/etc/php/8.3/fpm/pool.d/www.conf
Forespørg PHP-versionen angivet af HestiaCP
v-list-web-domain user domain.com
For eksempel:
v-list-web-domain abc chenweiliang.com
I outputtet vil du se noget som:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Det betyder, at siden bruger PHP 8.3.
Find og rediger følgende 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 后自动退出
Genstart derefter php-fpm For at gøre det effektivt:
sudo systemctl restart php-fpm
✅ effekt: Begræns antallet af processer for at forhindre php-fpm i at overforbruge CPU-ressourcer.
2. Aktiver OPCache (for at forbedre PHP-ydeevne)
PHP genskaber koden hver gang den udføres, hvilket er spild af ressourcer.
Løsningen? Aktiver OPCache og cache din PHP-kode!
编辑 php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Tilføj eller rediger følgende:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Efter at have gemt, genstart PHP-processen:
sudo systemctl restart php8.3-fpm
✅ effekt: Reducer gentagne parsing af PHP-kode, reducer CPU-byrden og forbedre eksekveringseffektiviteten.
3. Begræns den maksimale udførelsestid for PHP-scripts
Hvis et PHP-script kører for længe, vil CPU-ressourcer være konstant optaget.
Indstilling af en rimelig timeoutperiode kan forhindre "stædige" processer i at optage serveren i lang tid.
打开 php.ini dokument:
sudo nano /etc/php/*/fpm/php.ini
Rediger følgende parametre:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Genstart derefter PHP-processen:
sudo systemctl restart php-fpm
✅ effekt: Forhindrer PHP-processer i at køre i lang tid, og reducer spild af CPU-ressourcer.
4. Tjek MySQL Langsom forespørgsel
PHP-FPM har en høj belastning,Det kan være forårsaget af den langsomme SQL-forespørgsel!
开启 MySQL Langsom forespørgselslog, find ud af de SQL-sætninger, der holder tilbage.
Rediger MySQL-konfigurationsfilen:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Efter at have gemt, genstart MySQL:
sudo systemctl restart mysql
Brug derefter mysqldumpslow Analyser langsomme forespørgsler:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ effekt: Find ud af tidskrævende SQL-forespørgsler, optimer databasens ydeevne, og reducer indirekte PHP-belastning.
5. Begræns Memcached ressourceforbrug
Da jeg kiggede på proceslisten, fandt jeg Memcached proces CPU-brug er 24.8%!
Det kan være, at cache-allokeringen er for stor, hvilket får CPU'en til at behandle en stor mængde data.
调整 memcached 配置 :
sudo nano /etc/memcached.conf
Revidere:
-m 32 # 限制 Memcached 内存使用 32MB
Genstart derefter:
sudo systemctl restart memcached
✅ effekt: Reducer CPU-byrden af Memcached-processen og forbedre cacheeffektiviteten.
6. Aktiver Nginx til at cache statiske ressourcer
Mange gange behandler PHP anmodninger, der indeholder et stort antal CSS, JS, billeder, men disse filer behøver slet ikke PHP-parsing!
Løsningen? Brug Nginx til at cache statiske ressourcer!
Rediger Nginx-konfiguration:
sudo nano /etc/nginx/nginx.conf
添加:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Efter at have gemt, genstart Nginx:
sudo systemctl restart nginx
✅ effekt: Reducer antallet af gange, PHP behandler statiske filer, og reducer CPU-brug.
7. Find det PHP-script, der bruger mest CPU
Hvis CPU'en stadig er for høj efter optimering, kan det være, at nogle PHP-scripts kører vildt.
Brug følgende kommando til at finde ud af PHP-processen med det højeste CPU-forbrug:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Hvis du opdager, at et PHP-script optager for meget CPU, kan du dræbe det direkte:
kill -9 PID
✅ effekt: Nøjagtigt identificere de "dårlige æbler" og forhindre PHP-processen i at optage CPU'en i lang tid.
Resumé: 7 måder at optimere PHP-FPM på
✅ Begræns antallet af PHP-FPM-processer, for at forhindre CPU-overbelastning
✅ Aktiver OPCache, reducere gentagen parsing af PHP-kode
✅ Indstilling af PHP timeout, for at forhindre langvarig drift
✅ Kontrollerer langsomme MySQL-forespørgsler, optimere databaseforespørgselsydeevne
✅ Juster Memcached Memory, hvilket reducerer CPU-byrden
✅ Aktiver Nginx statisk cache, hvilket reducerer PHP-parsingbyrden
✅ Find PHP-scripts med højt CPU-forbrug, præcis optimering
Afslutningsvis
Serveroptimering er ligesom fitness, du skal foretage præcise justeringer og ikke rode rundt!
Efter en række optimeringer er min server-CPU-belastning faldet fra 80 % ned til 15 %, hjemmesiden åbner dobbelt så hurtigt!
Hvis din server har lignende problemer, så prøv disse metoder! 💪
???? Tag handling nu! Optimer din PHP-FPM og gem din server! 🚀
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) delte "HestiaCP php-fpm-processen optager mange CPU-ressourcer, hvordan optimerer man den? ”, kan det være nyttigt for dig.
Velkommen til at dele linket til denne artikel:https://www.chenweiliang.com/cwl-32490.html
