O proceso php-fpm de HestiaCP ocupa moitos recursos da CPU. Como podo optimizalo?

HestiaCP Aumento da CPU do servidor? Unha guía completa para optimizar o proceso PHP-FPM!

O proceso php-fpm de HestiaCP ocupa moitos recursos da CPU. Como podo optimizalo?

A CPU do servidor está sempre ao 100%? O ventilador está xirando salvaxe? A velocidade de apertura do sitio web está a diminuír?O culpable pode ser php-fpm!

Hai pouco descubrín chenweiliang.com Este grupo de PHP php-fpm O proceso consumiu a CPU como un tolo e o servidor colapsou!

Para reactivar o servidor, probei unha serie de métodos de optimización e finalmente logrei reducir o uso da CPU.

Agora, imos compartir isto Guía de optimización eficiente! 🚀

1. Limite o número de procesos php-fpm

A configuración predeterminada de php-fpm podeilimitadoO proceso créase sen control, o que fai que a CPU do servidor se sobrecargue.

Para optimizalo, podemos modificar os parámetros de xestión de procesos.

Aberto php-fpm Ficheiros de configuración:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Cambia á túa versión de PHP, como PHP8.3, e cámbiaa a isto:/etc/php/8.3/fpm/pool.d/www.conf

Consultar a versión de PHP establecida por HestiaCP

v-list-web-domain user domain.com

Por exemplo:

v-list-web-domain abc chenweiliang.com

Na saída, verás algo así como:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Isto significa que o sitio web usa PHP 8.3.

Localice e modifique os seguintes parámetros:

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 后自动退出

A continuación, reinicie php-fpm Para facelo efectivo:

sudo systemctl restart php-fpm

Efecto: Limite o número de procesos para evitar que php-fpm consuma demasiado os recursos da CPU.

2. Activa OPCache (para mellorar o rendemento de PHP)

PHP analiza o código cada vez que se executa, o que supón un desperdicio de recursos.
A solución? Activa OPCache e almacena o teu código PHP na caché.

编辑 php.ini documento:

sudo nano /etc/php/*/fpm/php.ini

Engade ou modifique o seguinte:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

Despois de gardar, reinicie o proceso PHP:

sudo systemctl restart php8.3-fpm

Efecto: Reduce a análise repetida do código PHP, reduce a carga da CPU e mellora a eficiencia da execución.

3. Limite o tempo máximo de execución dos scripts PHP

Se un script PHP se executa durante demasiado tempo, os recursos da CPU ocuparanse continuamente.
Establecer un período de tempo de espera razoable pode evitar que os procesos "teimudos" ocupen o servidor durante moito tempo.

Aberto php.ini documento:

sudo nano /etc/php/*/fpm/php.ini

Modifique os seguintes parámetros:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

A continuación, reinicie o proceso PHP:

sudo systemctl restart php-fpm

Efecto: Evita que os procesos PHP se executen durante moito tempo e reduce o desperdicio de recursos da CPU.

4. Comproba MySQL Consulta lenta

PHP-FPM ten unha alta carga,Pode ser causado pola lenta consulta SQL!
开启 MySQL Rexistro de consultas lento, descubra as instrucións SQL que se están a frear.

Edite o ficheiro de configuración de MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Engadir a:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

Despois de gardar, reinicie MySQL:

sudo systemctl restart mysql

Despois usa mysqldumpslow Analiza consultas lentas:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

Efecto: Descubra consultas SQL que levan moito tempo, optimice o rendemento da base de datos e reduza indirectamente a carga de PHP.

5. Limite o uso de recursos de Memcached

Mirando a lista de procesos, atopei O uso da CPU do proceso Memcached é do 24.8 %.
Pode ser que a asignación de caché sexa demasiado grande, o que fai que a CPU procese unha gran cantidade de datos.

调整 memcached Configuración:

sudo nano /etc/memcached.conf

Revisar:

-m 32  # 限制 Memcached 内存使用 32MB

A continuación, reinicie:

sudo systemctl restart memcached

Efecto: Reduce a carga da CPU do proceso Memcached e mellora a eficiencia da caché.

6. Activa Nginx para almacenar na caché recursos estáticos

Moitas veces, PHP procesa solicitudes que conteñen un gran número de CSS, JS, imaxes, pero estes ficheiros non precisan análise de PHP en absoluto!
A solución? Use Nginx para almacenar na caché recursos estáticos.

Editar configuración de Nginx:

sudo nano /etc/nginx/nginx.conf

Engadir a:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

Despois de gardar, reinicie Nginx:

sudo systemctl restart nginx

Efecto: Reduce o número de veces que PHP procesa ficheiros estáticos e reduce o uso da CPU.

7. Busca o script PHP que usa máis CPU

Se a CPU aínda é demasiado alta despois da optimización, pode ser que algúns scripts PHP estean a executarse de forma desenfreada.
Use o seguinte comando para descubrir o proceso PHP co maior uso de CPU:

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

Se consideras que un script PHP ocupa demasiada CPU, podes matalo directamente:

kill -9 PID

Efecto:Identifica con precisión as "mazás malas" e evita que o proceso PHP ocupe a CPU durante moito tempo.

Resumo: 7 formas de optimizar PHP-FPM

Limite o número de procesos PHP-FPM, para evitar a sobrecarga da CPU
Activar OPCache, reduce a análise repetida do código PHP
Configurando o tempo de espera de PHP, para evitar o funcionamento a longo prazo
Comprobando consultas lentas de MySQL, optimizar o rendemento das consultas da base de datos
Axustar a memoria Memcached, reducindo a carga da CPU
Activa a caché estática de Nginx, reducindo a carga de análise de PHP
Atopar scripts PHP de alto uso da CPU, optimización precisa

En conclusión

A optimización do servidor é como unha forma física, necesitas facer axustes precisos e non te metas.
Despois dunha serie de optimizacións, a carga da CPU do meu servidor diminuíu 80% ata 15%, o sitio web ábrese o dobre de rápido!
Se o teu servidor ten problemas similares, proba estes métodos. 💪

👉 Actúa agora! Optimiza o teu PHP-FPM e salva o teu servidor! 🚀

发表 评论

O teu enderezo de correo electrónico non será publicado. Utilízanse os campos obrigatorios * Etiqueta

Volver arriba