Directorio de artigos
- 1 O principal motivo polo que PHP-FPM está sobrecargado
- 2 Optimización do grupo de procesos PHP-FPM (axuste de parámetros básicos)
- 3 Activa o seguimento do estado de PHP-FPM para facer un seguimento do progreso en calquera momento
- 4 Optimice os rexistros PHP-FPM para solucionar problemas rapidamente
- 5 Reinicie PHP-FPM regularmente para evitar fugas de memoria
- 6 E se o problema persiste? Máis optimización!
- 7 Resumo: optimiza PHP-FPM e o sitio web xa non fallará.
Encontrácheste algunha vez con esta situación?O acceso ao sitio web diminuíu de súpeto ou mesmo provocou un erro 500 Despois de reiniciar PHP-FPM, volveu á normalidade., pero o problema reaparece despois dun tempo? Isto é tan frustrante!
Por que sucede isto?De feito, isto adoita serO grupo de procesos PHP-FPM non está configurado correctamente ou os recursos do servidor son insuficientes.causada por. Hoxe, imos optimizar a fondo HestiaCP PHP-FPM baixo o capó fai que o sitio web sexa tan estable coma unha roca.
O principal motivo polo que PHP-FPM está sobrecargado
PHP-FPM é unXestor de Procesos, que se encarga de xestionar as solicitudes dinámicas. Se a configuración non é razoable, pode levar a:
- Os recursos do servidor están esgotados, facendo que PHP-FPM non poida responder a novas solicitudes de forma oportuna;
- Procesos moi poucos, cando o tráfico aumenta de súpeto, non se pode procesar a tempo;
- O uso do proceso é demasiado alto, facendo que a carga da CPU explote.

Como saber se PHP-FPM está sobrecargado?
pode usar top 或 htop Comando para ver o uso da CPU e da memoria:
top -c
Se ves información de proceso similar á seguinte, significa que PHP-FPM está a executarse con alta carga:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
Ves como estes procesos están ocupando máis do 70% da CPU? Se isto ocorre con frecuencia, o teu PHP-FPM Debe haber un problema!
Entón, como podemos optimizar a configuración PHP-FPM para que o servidor xa non estea sobrecargado?
Optimización do grupo de procesos PHP-FPM (axuste de parámetros básicos)
Primeiro, abre 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.
Vexamos a túa configuración de PHP-FPM:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
Podes ver que o teu pm O que se usa é ondemand,Aínda que pode reducir o uso de recursos durante o tempo de inactividade, cando o tráfico aumenta de súpeto, é posible que o proceso non poida responder a tempo., resultando nun erro 500.
1. Axuste os parámetros do grupo de procesos PHP-FPM
Se a configuración usa dynamicEste é un método para iniciar previamente algúns procesos de traballo e axustalos dinamicamente segundo o volume de solicitudes, o que pode responder máis rápido cando o volume de solicitudes aumenta repentinamente.
Para sitios web con certa cantidade de tráfico, recoméndase usar pm = dynamicPorque pode manter unha certa cantidade de procesos inactivos e evitar 500 erros durante a alta concorrencia.
Recoméndase usalo só cando o volume de acceso sexa extremadamente baixo e os recursos de memoria sexan axustados. pm = ondemand Para aforrar recursos.
Suxerido cambiar a ondemand, e optimizar pm.max_children E outros 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 后自动退出
Por que queres cambialo así?
pm = dynamic: Asigne os procesos de forma máis flexible para evitar a espera de solicitudes que pode ser causada pola demanda;pm.max_children = 16: Evita 500 erros causados por moi poucos procesos;pm.start_servers = 5: Evite o inicio lento do proceso;pm.max_requests = 3000:Prevención de fugas de memoria, recicla o proceso regularmente.
2. Limite o tempo de execución dos scripts PHP para evitar a ocupación a longo prazo
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Isto pode evitar algúnsOs scripts PHP que usan demasiada CPU poden derrubar o teu servidor.
Despois de gardar, reinicie o proceso PHP:
sudo systemctl restart php8.3-fpmActiva o seguimento do estado de PHP-FPM para facer un seguimento do progreso en calquera momento
Active o seguimento do proceso PHP-FPM e visualízao en calquera momentoNúmero actual de procesos activos e estado de espera da solicitude, para evitar a sobrecarga do servidor.
en php-fpm.conf Engadido en:
pm.status_path = /status
Entón, configuración de Nginx:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
Deste xeito, podes http://yourdomain.com/status Consulte PHP-FPM en acción!
Optimice os rexistros PHP-FPM para solucionar problemas rapidamente
en php-fpm.conf Engadir a:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
Deste xeito, sempre que se produza un erro 500, pode ver directamente o rexistro:
tail -f /var/log/php-fpm/error.log
Vexa se PHP informa un erro, como out of memory,script execution timeout Agarda.
Reinicie PHP-FPM regularmente para evitar fugas de memoria
capaz de pasar cron Reinicie PHP-FPM regularmente para evitar que os procesos de longa duración causenFugas de memoria.
crontab -e
Engade a seguinte tarefa programada para reiniciar automaticamente PHP-FPM ás 3 da mañá todos os días:
0 3 * * * /usr/sbin/service php8.3-fpm restart
E se o problema persiste? Máis optimización!
Se aínda segues a optimización anteriorÁs veces ocorren 500 erros, pode continuar coas seguintes optimizacións:
1. Activa OPcache para mellorar a eficiencia da execución de PHP
Se OPcache aínda non está activado, podes instalalo así (usando Ubuntu como exemplo):
sudo apt install php8.3-opcache -y
Despois edita php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Efecto? A velocidade de execución da páxina PHP mellorouse moito!
2. Optimización da configuración de Nginx
Asegúrese de que os parámetros relacionados con Nginx sexan razoables, como fastcgi_read_timeout Axústao adecuadamente para evitar que Nginx finalice os scripts PHP debido ao longo tempo de execución:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Resumo: optimiza PHP-FPM e o sitio web xa non fallará.
Que axustes fixemos despois desta optimización?
✅ Optimización do conxunto de procesos PHP-FPM, usar ondemandE optimizar pm.max_children parámetro;
✅ Limitar o tempo de execución de scripts PHP, para evitar a ocupación da CPU a longo prazo;
✅ Activar a monitorización PHP-FPM, ver a carga do proceso en tempo real;
✅ Optimización de rexistros PHP-FPM, solucione rapidamente 500 erros;
✅ Reinicie PHP-FPM regularmente, evitar fugas de memoria;
✅ Activa OPcache, mellorar a eficiencia da execución de PHP;
✅ Optimización da configuración de Nginx, para evitar problemas de tempo de espera.
Despois desta optimización, a carga PHP-FPM reducirase moito e o funcionamento do sitio web será máis estable. 🔥
Vai probalo agora! 💪🚀
Blog de Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartiu "A carga PHP-FPM de HestiaCP é demasiado alta? Erro na páxina web dinámica 500? Esta optimización entrará en vigor inmediatamente! ”, pode ser útil para ti.
Benvido a compartir a ligazón deste artigo:https://www.chenweiliang.com/cwl-32512.html
Para desbloquear máis trucos ocultos🔑, únete á nosa canle de Telegram!
Comparte e da like se te gusta! As túas accións e Gústame son a nosa motivación continua!