Directory articoli
Picchi di utilizzo della CPU sul server HestiaCP ? Una guida completa all'ottimizzazione dei processi PHP-FPM!

La CPU del tuo server è costantemente al 100%? Le ventole girano a velocità folle? Il tuo sito web si carica lentamente? Il colpevole potrebbe essere php-fpm!
Ho scoperto di recente chenweiliang.com Questo pool PHP php-fpm Il processo ha consumato la CPU in modo esponenziale e il server si è bloccato!
Per riattivare il server, ho provato una serie di metodi di ottimizzazione e alla fine sono riuscito a ridurre l'utilizzo della CPU.
Ora condividiamo questa efficace guida all'ottimizzazione ! 🚀
1. Limitare il numero di processi php-fpm
Le impostazioni predefinite di php-fpm potrebbero creare un numero illimitato di processi, causando un sovraccarico della CPU del server.
Per ottimizzarlo, possiamo modificare i parametri di gestione del processo.
accendere php-fpm 配置文件:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Passa alla tua versione di PHP, ad esempio PHP8.3, e modificala come segue:
/etc/php/8.3/fpm/pool.d/www.conf
Interroga la versione PHP impostata da HestiaCP
v-list-web-domain user domain.com
例如:
v-list-web-domain abc chenweiliang.com
Nell'output vedrai qualcosa del tipo:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Ciò indica che il sito web utilizza PHP 8.3.
Individuare e modificare i seguenti parametri:
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 后自动退出
Quindi riavviare php-fpm Per renderlo efficace:
sudo systemctl restart php-fpm
✅Effetto : Limita il numero di processi per impedire a php-fpm di consumare eccessivamente le risorse della CPU.
2. Abilita OPCache (per migliorare le prestazioni PHP)
PHP rianalizza il codice ogni volta che viene eseguito, il che rappresenta uno spreco di risorse.
La soluzione? Abilita OPCache e memorizza nella cache il tuo codice PHP!
编辑 php.ini documento:
sudo nano /etc/php/*/fpm/php.ini
Aggiungere o modificare quanto segue:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Dopo aver salvato, riavviare il processo PHP:
sudo systemctl restart php8.3-fpm
✅Effetto : Riduce l'analisi ripetitiva del codice PHP, diminuisce il carico della CPU e migliora l'efficienza di esecuzione.
3. Limitare il tempo massimo di esecuzione degli script PHP
Se uno script PHP viene eseguito per troppo tempo, le risorse della CPU saranno continuamente occupate.
Impostando un periodo di timeout ragionevole è possibile impedire che processi "ostinati" occupino il server per lungo tempo.
accendere php.ini documento:
sudo nano /etc/php/*/fpm/php.ini
Modificare i seguenti parametri:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Quindi riavviare il processo PHP:
sudo systemctl restart php-fpm
✅Effetto : impedisce ai processi PHP di rimanere in esecuzione per periodi prolungati, riducendo lo spreco di risorse della CPU.
4. Controlla MySQL Query lenta
PHP-FPM ha un carico elevato,Potrebbe essere causato dalla lentezza della query SQL!
开启 MySQL Registro delle query lente, scopri quali istruzioni SQL stanno rallentando.
Modifica il file di configurazione MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Rispondi:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Dopo aver salvato, riavviare MySQL:
sudo systemctl restart mysql
Quindi utilizzare mysqldumpslow Analizza le query lente:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅Risultato : Identifica le query SQL che richiedono molto tempo, ottimizza le prestazioni del database e riduci indirettamente il carico di PHP.
5. Restrizioni memcached Utilizzo delle risorse
Guardando l'elenco dei processi, ho trovato L'utilizzo della CPU da parte del processo Memcached è del 24.8%!
Potrebbe darsi che l'allocazione della cache sia troppo grande, costringendo la CPU a elaborare una grande quantità di dati.
调整 memcached 配置:
sudo nano /etc/memcached.conf
修改:
-m 32 # 限制 Memcached 内存使用 32MB
Quindi riavviare:
sudo systemctl restart memcached
✅Effetto : Riduce il carico della CPU sul processo Memcached e migliora l'efficienza della cache.
6. Abilitare Nginx per memorizzare nella cache le risorse statiche
Molte volte, PHP elabora richieste che contengono un gran numero di CSS, JS, immagini, ma questi file non hanno affatto bisogno dell'analisi PHP!
La soluzione? Utilizza Nginx per memorizzare nella cache le risorse statiche!
Modifica la configurazione Nginx:
sudo nano /etc/nginx/nginx.conf
Rispondi:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Dopo aver salvato, riavviare Nginx:
sudo systemctl restart nginx
✅Risultato : Riduce il numero di volte in cui PHP elabora i file statici, diminuendo così l'utilizzo della CPU.
7. Trova lo script PHP che utilizza più CPU
Se dopo l'ottimizzazione la CPU è ancora troppo impegnata, è possibile che alcuni script PHP vengano eseguiti in modo anomalo.
Utilizzare il seguente comando per scoprire il processo PHP con il più alto utilizzo della CPU:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Se scopri che uno script PHP sta occupando troppa CPU, puoi interromperlo direttamente:
kill -9 PID
✅Risultato : identifica con precisione i processi problematici e impedisce che i processi PHP occupino la CPU per periodi prolungati.
Riepilogo: 7 modi per ottimizzare PHP-FPM
✅ Limitare il numero di processi PHP-FPM, per prevenire il sovraccarico della CPU
✅ Abilita OPCache, ridurre l'analisi ripetuta del codice PHP
✅ Impostazione del timeout PHP, per prevenire il funzionamento a lungo termine
✅ Controllo delle query lente di MySQL, ottimizzare le prestazioni delle query del database
✅ Regola la memoria Memcached, riducendo il carico della CPU
✅ Abilita la cache statica Nginx, riducendo il carico di analisi PHP
✅ Trova script PHP ad alto utilizzo della CPU, ottimizzazione precisa
conclusione
L'ottimizzazione del server è come il fitness: devi apportare modifiche precise e non scherzare!
Dopo una serie di ottimizzazioni, il carico della CPU del mio server è sceso da Dall'80% al 15%, il sito si apre due volte più velocemente!
Se il tuo server presenta problemi simili, prova questi metodi! 💪
👉Agisci subito! Ottimizza PHP-FPM e salva il tuo server! 🚀
Speriamo che l'articolo "Il processo php-fpm di HestiaCP consuma molte risorse della CPU, come ottimizzarlo?" condiviso sul blog di Chen Weiliang ( https://www.chenweiliang.com/ ) possa esservi utile.
Sentitevi liberi di condividere il link di questo articolo: https://www.chenweiliang.com/cwl-32490.html
