Procesul HestiaCP php-fpm ocupă o mulțime de resurse CPU. Cum îl pot optimiza?

HestiaCP Spike CPU server? Un ghid complet pentru optimizarea procesului PHP-FPM!

Procesul HestiaCP php-fpm ocupă o mulțime de resurse CPU. Cum îl pot optimiza?

CPU-ul serverului este întotdeauna la 100%? Ventilatorul se învârte sălbatic? Viteza de deschidere a site-ului scade?Vinovatul ar putea fi php-fpm!

Am descoperit recent chenweiliang.com Acest pool PHP php-fpm Procesul a consumat mult procesorul, iar serverul s-a blocat!

Pentru a reactiva serverul, am încercat o serie de metode de optimizare și în cele din urmă am reușit să reduc utilizarea procesorului.

Acum, hai să împărtășim asta Ghid de optimizare eficientă! 🚀

1. Limitați numărul de procese php-fpm

setările implicite php-fpm potnelimitatProcesul este creat necontrolat, determinând supraîncărcarea procesorului serverului.

Pentru a-l optimiza, putem modifica parametrii de gestionare a procesului.

打开 php-fpm Fișiere de configurare:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Schimbați la versiunea PHP, cum ar fi PHP8.3, și modificați-o la aceasta:/etc/php/8.3/fpm/pool.d/www.conf

Interogarea versiunii PHP setate de HestiaCP

v-list-web-domain user domain.com

De exemplu:

v-list-web-domain abc chenweiliang.com

În rezultat, veți vedea ceva de genul:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Aceasta înseamnă că site-ul folosește PHP 8.3.

Găsiți și modificați următorii 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 后自动退出

Apoi reporniți php-fpm Pentru a-l face eficient:

sudo systemctl restart php-fpm

efect: Limitați numărul de procese pentru a preveni php-fpm să consume prea mult resursele CPU.

2. Activați OPCache (pentru a îmbunătăți performanța PHP)

PHP reproșează codul de fiecare dată când este executat, ceea ce este o risipă de resurse.
Solutia? Activați OPCache și memorați codul PHP în cache!

Editați | × php.ini document:

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

Adăugați sau modificați următoarele:

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

După salvare, reporniți procesul PHP:

sudo systemctl restart php8.3-fpm

efect: Reduceți analiza repetată a codului PHP, reduceți sarcina CPU și îmbunătățiți eficiența execuției.

3. Limitați timpul maxim de execuție al scripturilor PHP

Dacă un script PHP rulează prea mult timp, resursele CPU vor fi ocupate continuu.
Setarea unei perioade rezonabile de timeout poate împiedica procesele „încăpățânate” să ocupe serverul pentru o lungă perioadă de timp.

打开 php.ini document:

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

Modificați următorii parametri:

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

Apoi reporniți procesul PHP:

sudo systemctl restart php-fpm

efect: Preveniți rularea proceselor PHP pentru o perioadă lungă de timp și reduceți risipa de resurse CPU.

4. Verificați MySQL Interogare lentă

PHP-FPM are o sarcină mare,Poate fi cauzat de interogarea SQL lentă!
deschis MySQL Jurnal de interogări lent, aflați instrucțiunile SQL care rețin.

Editați fișierul de configurare MySQL:

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

Plus:

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

După salvare, reporniți MySQL:

sudo systemctl restart mysql

Apoi folosiți mysqldumpslow Analizați interogările lente:

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

efect: Aflați interogări SQL care necesită timp, optimizați performanța bazei de date și reduceți indirect încărcarea PHP.

5. Limitați utilizarea resurselor Memcached

Uitându-mă la lista de procese, am găsit Utilizarea procesorului Memcached este de 24.8%!
Este posibil ca alocarea cache-ului să fie prea mare, determinând CPU-ul să proceseze o cantitate mare de date.

调整 memcached 配置 :

sudo nano /etc/memcached.conf

修改:

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

Apoi reporniți:

sudo systemctl restart memcached

efect: Reduceți sarcina CPU a procesului Memcached și îmbunătățiți eficiența memoriei cache.

6. Activați Nginx pentru a stoca în cache resursele statice

De multe ori, PHP procesează cereri care conțin un număr mare de CSS, JS, imagini, dar aceste fișiere nu au nevoie de analiza PHP deloc!
Solutia? Utilizați Nginx pentru a stoca în cache resursele statice!

Editați configurația Nginx:

sudo nano /etc/nginx/nginx.conf

Plus:

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

După salvare, reporniți Nginx:

sudo systemctl restart nginx

efect: Reduceți numărul de ocazii în care PHP procesează fișiere statice și reduceți utilizarea CPU.

7. Găsiți scriptul PHP care folosește cel mai mult CPU

Dacă CPU este încă prea mare după optimizare, este posibil ca unele scripturi PHP să ruleze nebunesc.
Utilizați următoarea comandă pentru a afla procesul PHP cu cea mai mare utilizare a CPU:

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

Dacă descoperiți că un script PHP ocupă prea mult CPU, îl puteți opri direct:

kill -9 PID

efect:Identificați cu precizie „merele rele” și împiedicați procesul PHP să ocupe CPU pentru o perioadă lungă de timp.

Rezumat: 7 moduri de a optimiza PHP-FPM

Limitați numărul de procese PHP-FPM, pentru a preveni supraîncărcarea procesorului
Activați OPCache, reduce parsarea repetată a codului PHP
Setarea timpului de expirare PHP, pentru a preveni funcționarea pe termen lung
Verificarea interogărilor lente MySQL, optimizați performanța interogării bazei de date
Reglați memoria Memcached, reducând sarcina procesorului
Activați memoria cache static Nginx, reducând sarcina de analiză PHP
Găsiți scripturi PHP cu utilizare mare a CPU, optimizare precisa

in concluzie

Optimizarea serverului este ca fitness-ul, trebuie să faceți ajustări precise și să nu vă încurcați!
După o serie de optimizări, încărcarea CPU a serverului meu a scăzut de la 80% până la 15%, site-ul se deschide de două ori mai repede!
Dacă serverul dvs. are probleme similare, încercați aceste metode! 💪

???? Luați măsuri acum! Optimizați-vă PHP-FPM și salvați-vă serverul! 🚀

发表 评论

Adresa ta de e-mail nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

Director articol
Derulaţi în sus