El procés HestiaCP php-fpm ocupa molts recursos de la CPU. Com puc optimitzar-lo?

HestiaCP Augment de la CPU del servidor? Una guia completa per optimitzar el procés PHP-FPM!

El procés HestiaCP php-fpm ocupa molts recursos de la CPU. Com puc optimitzar-lo?

La CPU del servidor està sempre al 100%? El ventilador gira de manera salvatge? La velocitat d'obertura del lloc web s'està alentint?El culpable podria ser php-fpm!

Vaig descobrir fa poc chenweiliang.com Aquest grup de PHP php-fpm El procés va consumir la CPU com un boig i el servidor va fallar!

Per tal de reactivar el servidor, vaig provar una sèrie de mètodes d'optimització i finalment vaig aconseguir reduir l'ús de la CPU.

Ara, compartim això Guia d'optimització eficient! 🚀

1. Limiteu el nombre de processos php-fpm

La configuració predeterminada de php-fpm pot seril·limitatEl procés es crea de manera incontrolable, fent que la CPU del servidor es sobrecarregui.

Per optimitzar-ho, podem modificar els paràmetres de gestió del procés.

打开 php-fpm Fitxers de configuració:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Canvia a la teva versió de PHP, com ara PHP8.3, i canvia-la a això:/etc/php/8.3/fpm/pool.d/www.conf

Consulta la versió de PHP establerta per HestiaCP

v-list-web-domain user domain.com

Per exemple:

v-list-web-domain abc chenweiliang.com

A la sortida, veureu alguna cosa com:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Això vol dir que el lloc web utilitza PHP 8.3.

Cerqueu i modifiqueu els paràmetres següents:

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ó, reinicieu php-fpm Per fer-ho efectiu:

sudo systemctl restart php-fpm

Efecte: Limiteu el nombre de processos per evitar que php-fpm consumeixi massa recursos de CPU.

2. Activa OPCache (per millorar el rendiment de PHP)

PHP revisa el codi cada vegada que s'executa, la qual cosa és un malbaratament de recursos.
La solució? Habiliteu OPCache i emmagatzemeu a la memòria cau el vostre codi PHP!

editar php.ini document:

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

Afegiu o modifiqueu el següent:

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

Després de desar, reinicieu el procés PHP:

sudo systemctl restart php8.3-fpm

Efecte: Redueix l'anàlisi repetida del codi PHP, redueix la càrrega de la CPU i millora l'eficiència de l'execució.

3. Limiteu el temps màxim d'execució dels scripts PHP

Si un script PHP s'executa durant massa temps, els recursos de la CPU estaran ocupats contínuament.
Establir un període de temps d'espera raonable pot evitar que els processos "tossuts" ocupin el servidor durant molt de temps.

打开 php.ini document:

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

Modifiqueu els paràmetres següents:

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

A continuació, reinicieu el procés PHP:

sudo systemctl restart php-fpm

Efecte: Evita que els processos PHP s'executin durant molt de temps i redueix el malbaratament de recursos de la CPU.

4. Comprovar MySQL Consulta lenta

PHP-FPM té una càrrega elevada,Pot ser causat per la consulta SQL lenta!
Obert MySQL Registre de consultes lent, esbrineu les sentències SQL que estan frenant.

Editeu el fitxer de configuració de MySQL:

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

Afegeix a:

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

Després de desar, reinicieu MySQL:

sudo systemctl restart mysql

A continuació, utilitzeu mysqldumpslow Analitzeu les consultes lentes:

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

Efecte: Descobriu les consultes SQL que consumeixen molt de temps, optimitzeu el rendiment de la base de dades i reduïu indirectament la càrrega de PHP.

5. Limiteu l'ús de recursos de Memcached

Mirant la llista de processos, vaig trobar L'ús de la CPU del procés Memcached és del 24.8%!
Pot ser que l'assignació de memòria cau sigui massa gran, cosa que fa que la CPU processi una gran quantitat de dades.

调整 memcached Configuració:

sudo nano /etc/memcached.conf

修改:

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

A continuació, reinicieu:

sudo systemctl restart memcached

Efecte: Redueix la càrrega de la CPU del procés Memcached i millora l'eficiència de la memòria cau.

6. Habiliteu Nginx per a la memòria cau recursos estàtics

Moltes vegades, PHP processa peticions que contenen un gran nombre de CSS, JS, imatges, però aquests fitxers no necessiten cap anàlisi PHP!
La solució? Utilitzeu Nginx per a la memòria cau recursos estàtics!

Editeu la configuració de Nginx:

sudo nano /etc/nginx/nginx.conf

Afegeix a:

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

Després de desar, reinicieu Nginx:

sudo systemctl restart nginx

Efecte: Redueix el nombre de vegades que PHP processa fitxers estàtics i redueix l'ús de la CPU.

7. Trobeu l'script PHP que utilitzi més CPU

Si la CPU encara és massa alta després de l'optimització, pot ser que alguns scripts PHP s'estiguin executant de manera salvatge.
Utilitzeu l'ordre següent per esbrinar el procés PHP amb el màxim ús de CPU:

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

Si trobeu que un script PHP ocupa massa CPU, podeu eliminar-lo directament:

kill -9 PID

Efecte:Identifiqueu amb precisió les "pomes dolentes" i eviteu que el procés PHP ocupi la CPU durant molt de temps.

Resum: 7 maneres d'optimitzar PHP-FPM

Limiteu el nombre de processos PHP-FPM, per evitar la sobrecàrrega de la CPU
Habiliteu OPCache, reduir l'anàlisi repetida del codi PHP
Configurant el temps d'espera de PHP, per evitar el funcionament a llarg termini
Comprovació de consultes lentes de MySQL, optimitzar el rendiment de la consulta de la base de dades
Ajusta la memòria Memcached, reduint la càrrega de la CPU
Activa la memòria cau estàtica de Nginx, reduint la càrrega d'anàlisi de PHP
Trobeu scripts PHP d'ús elevat de CPU, optimització precisa

en conclusió

L'optimització del servidor és com la forma física, heu de fer ajustos precisos i no us enganyeu!
Després d'una sèrie d'optimitzacions, la càrrega de la CPU del meu servidor ha baixat Del 80% al 15%, el lloc web s'obre el doble de ràpid!
Si el vostre servidor té problemes similars, proveu aquests mètodes! 💪

👉 Preneu acció ara! Optimitzeu el vostre PHP-FPM i deseu el vostre servidor! ????

发表 评论

La teva adreça de correu electrònic no es publicarà. S'utilitzen els camps obligatoris * 标注

Tornar a dalt