Directorio de artículos
- 1 1. Limite el número de procesos php-fpm
- 2 2. Habilite OPCache (para mejorar el rendimiento de PHP)
- 3 3. Limite el tiempo máximo de ejecución de los scripts PHP
- 4 4. Comprueba las consultas lentas de MySQL
- 5 5. Limite el uso de recursos de Memcached
- 6 6. Habilite Nginx para almacenar en caché recursos estáticos
- 7 7. Encuentra el script PHP que utiliza más CPU
- 8 Resumen: 7 formas de optimizar PHP-FPM
- 9 Conclusión
hestiacp ¿Pico de CPU del servidor? ¡Una guía completa para optimizar el proceso PHP-FPM!

¿La CPU del servidor está siempre al 100%? ¿El ventilador está girando salvajemente? ¿La velocidad de apertura del sitio web está disminuyendo?¡El culpable podría ser php-fpm!
Descubrí recientemente chenweiliang.com Este pool de PHP php-fpm ¡El proceso consumió mucha CPU y el servidor colapsó!
Para revivir el servidor, probé una serie de métodos de optimización y finalmente logré reducir el uso de la CPU.
Ahora, compartamos esto. Guía de optimización eficiente! 🚀
1. Limite el número de procesos php-fpm
La configuración predeterminada de php-fpm puede无限El proceso se crea sin control, provocando que la CPU del servidor se sobrecargue.
Para optimizarlo, podemos modificar los parámetros de gestión del proceso.
Abierto php-fpm Archivo de configuración:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Cambie a su versión de PHP, como PHP8.3, y cámbiela a esto:
/etc/php/8.3/fpm/pool.d/www.conf
Consultar la versión de PHP establecida por HestiaCP
v-list-web-domain user domain.com
例如:
v-list-web-domain abc chenweiliang.com
En la salida verás algo como:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Esto significa que el sitio web utiliza PHP 8.3.
Busque y modifique los siguientes 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 后自动退出
Luego reinicie php-fpm Para que sea efectivo:
sudo systemctl restart php-fpm
✅ efecto:Limite la cantidad de procesos para evitar que php-fpm consuma demasiados recursos de la CPU.
2. Habilite OPCache (para mejorar el rendimiento de PHP)
PHP vuelve a analizar el código cada vez que se ejecuta, lo que supone un desperdicio de recursos.
¿La solución? ¡Habilite OPCache y almacene en caché su código PHP!
编辑 php.ini documento:
sudo nano /etc/php/*/fpm/php.ini
Añade o modifica lo siguiente:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Después de guardar, reinicie el proceso PHP:
sudo systemctl restart php8.3-fpm
✅ efecto:Reduce el análisis repetido del código PHP, reduce la carga de la CPU y mejora la eficiencia de ejecución.
3. Limite el tiempo máximo de ejecución de los scripts PHP
Si un script PHP se ejecuta durante demasiado tiempo, los recursos de la CPU estarán continuamente ocupados.
Establecer un período de tiempo de espera razonable puede evitar que procesos "obstinados" ocupen el servidor durante mucho tiempo.
Abierto php.ini documento:
sudo nano /etc/php/*/fpm/php.ini
Modifique los siguientes parámetros:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Luego reinicie el proceso PHP:
sudo systemctl restart php-fpm
✅ efecto:Evita que los procesos PHP se ejecuten durante mucho tiempo y reduce el desperdicio de recursos de la CPU.
4. Verificar MySQL Consulta lenta
PHP-FPM tiene una carga alta,¡Puede ser causado por la lentitud de la consulta SQL!
开启 MySQL Registro de consultas lentas, descubra las sentencias SQL que están reteniendo el resultado.
Editar el archivo de configuración de MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Nombre:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Después de guardar, reinicie MySQL:
sudo systemctl restart mysql
Luego usa mysqldumpslow Analizar consultas lentas:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ efecto:Descubra consultas SQL que consumen mucho tiempo, optimice el rendimiento de la base de datos y reduzca indirectamente la carga de PHP.
5. Limite el uso de recursos de Memcached
Mirando la lista de procesos, encontré ¡El uso de CPU del proceso Memcached es del 24.8%!
Es posible que la asignación de caché sea demasiado grande, lo que provoca que la CPU procese una gran cantidad de datos.
调整 memcached Configuración:
sudo nano /etc/memcached.conf
修改:
-m 32 # 限制 Memcached 内存使用 32MB
Luego reinicie:
sudo systemctl restart memcached
✅ efecto:Reduce la carga de la CPU del proceso Memcached y mejora la eficiencia del caché.
6. Habilite Nginx para almacenar en caché recursos estáticos
Muchas veces, PHP procesa solicitudes que contienen una gran cantidad de CSS, JS, imágenes, ¡pero estos archivos no necesitan análisis PHP en absoluto!
¿La solución? ¡Utilice Nginx para almacenar en caché recursos estáticos!
Editar la configuración de Nginx:
sudo nano /etc/nginx/nginx.conf
Nombre:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Después de guardar, reinicie Nginx:
sudo systemctl restart nginx
✅ efecto:Reduce la cantidad de veces que PHP procesa archivos estáticos y reduce el uso de la CPU.
7. Encuentra el script PHP que utiliza más CPU
Si el consumo de la CPU sigue siendo demasiado alto después de la optimización, es posible que algunos scripts PHP se estén ejecutando de forma descontrolada.
Utilice el siguiente comando para descubrir el proceso PHP con el mayor uso de CPU:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Si descubre que un script PHP está ocupando demasiada CPU, puede eliminarlo directamente:
kill -9 PID
✅ efecto:Identifique con precisión las "manzanas podridas" y evite que el proceso PHP ocupe la CPU durante mucho tiempo.
Resumen: 7 formas de optimizar PHP-FPM
✅ Limitar el número de procesos PHP-FPM, para evitar la sobrecarga de la CPU
✅ Habilitar OPCache, reduce el análisis repetido del código PHP
✅ Configuración del tiempo de espera de PHP, para evitar el funcionamiento a largo plazo
✅ Comprobación de consultas lentas en MySQL, optimizar el rendimiento de las consultas de la base de datos
✅ Ajustar la memoria Memcached, reduciendo la carga de la CPU
✅ Habilitar la caché estática de Nginx, reduciendo la carga de análisis de PHP
✅ Encuentre scripts PHP que hacen un uso elevado de la CPU, optimización precisa
Conclusión
La optimización del servidor es como el fitness: hay que hacer ajustes precisos y no andarse con rodeos.
Después de una serie de optimizaciones, la carga de la CPU de mi servidor ha disminuido de 80% hasta 15%¡El sitio web se abre el doble de rápido!
Si su servidor tiene problemas similares, ¡pruebe estos métodos! 💪
👉 ¡Actúa ahora! ¡Optimice su PHP-FPM y salve su servidor! 🚀
Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartió "El proceso php-fpm de HestiaCP consume muchos recursos de CPU, ¿cómo optimizarlo? ”, puede que te sea de utilidad.
Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-32490.html
