Il processo php-fpm di HestiaCP occupa molte risorse della CPU. Come posso ottimizzarlo?

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

Il processo php-fpm di HestiaCP occupa molte risorse della CPU. Come posso ottimizzarlo?

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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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! 🚀

发表 评论

您的邮箱地址不会被公开.必填项已用*标注

Scorrere fino a Top