HestiaCP php-fpm process aizņem daudz CPU resursu. Kā to optimizēt?

HestiaCP Servera CPU pieaugums? Pilnīgs ceļvedis PHP-FPM procesa optimizēšanai!

HestiaCP php-fpm process aizņem daudz CPU resursu. Kā to optimizēt?

Vai servera CPU vienmēr ir 100%? Ventilators mežonīgi griežas? Vai vietnes atvēršanas ātrums palēninās?Vainīgais varētu būt php-fpm!

Es nesen atklāju chenweiliang.com Šis PHP baseins php-fpm Process neprātīgi noslogoja centrālo procesoru, un serveris avarēja!

Lai atdzīvinātu serveri, es izmēģināju vairākas optimizācijas metodes un beidzot man izdevās samazināt centrālā procesora noslodzi.

Tagad dalīsimies ar šo Efektīvas optimizācijas rokasgrāmata! 🚀

1. Ierobežojiet php-fpm procesu skaitu

php-fpm noklusējuma iestatījumi varneierobežotsProcess tiek izveidots nekontrolējami, izraisot servera CPU pārslodzi.

Lai to optimizētu, mēs varam modificēt procesa pārvaldības parametrus.

打开 php-fpm Konfigurācijas faili:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Pārslēdzieties uz savu PHP versiju, piemēram, PHP8.3, un nomainiet to uz šo:/etc/php/8.3/fpm/pool.d/www.conf

Vaicājiet HestiaCP iestatīto PHP versiju

v-list-web-domain user domain.com

E. g .:

v-list-web-domain abc chenweiliang.com

Izvadē jūs redzēsit kaut ko līdzīgu:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Tas nozīmē, ka vietne izmanto PHP 8.3.

Atrodiet un mainiet šādus parametrus:

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

Pēc tam restartējiet php-fpm Lai padarītu to efektīvu:

sudo systemctl restart php-fpm

Efekts: ierobežojiet procesu skaitu, lai novērstu php-fpm pārmērīgu CPU resursu patēriņu.

2. Iespējojiet OPCache (lai uzlabotu PHP veiktspēju)

PHP atkārtoti parsē kodu katru reizi, kad tas tiek izpildīts, un tas ir resursu izšķiešana.
Risinājums? Iespējojiet OPCache un saglabājiet savu PHP kodu kešatmiņā!

编源 php.ini dokuments:

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

Pievienojiet vai mainiet tālāk norādīto.

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

Pēc saglabāšanas restartējiet PHP procesu:

sudo systemctl restart php8.3-fpm

Efekts: samaziniet atkārtotu PHP koda parsēšanu, samaziniet CPU slodzi un uzlabojiet izpildes efektivitāti.

3. Ierobežojiet PHP skriptu maksimālo izpildes laiku

Ja PHP skripts darbojas pārāk ilgi, CPU resursi tiks nepārtraukti aizņemti.
Saprātīga noildzes perioda iestatīšana var novērst to, ka "spītīgi" procesi ilgstoši aizņem serveri.

打开 php.ini dokuments:

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

Mainiet šādus parametrus:

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

Pēc tam restartējiet PHP procesu:

sudo systemctl restart php-fpm

Efekts: neļaujiet PHP procesiem darboties ilgu laiku un samaziniet CPU resursu izšķērdēšanu.

4. Pārbaudiet MySQL Lēns vaicājums

PHP-FPM ir liela slodze,To var izraisīt lēns SQL vaicājums!
ieslēdz MySQL Lēns vaicājumu žurnāls, noskaidrojiet SQL paziņojumus, kas kavē.

Rediģējiet MySQL konfigurācijas failu:

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

添加:

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

Pēc saglabāšanas restartējiet MySQL:

sudo systemctl restart mysql

Pēc tam izmantojiet mysqldumpslow Analizējiet lēnus vaicājumus:

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

Efekts: noskaidrojiet laikietilpīgos SQL vaicājumus, optimizējiet datu bāzes veiktspēju un netieši samaziniet PHP slodzi.

5. Ierobežojiet atmiņā saglabāto resursu izmantošanu

Apskatot procesu sarakstu, es atradu Memcached procesa CPU lietojums ir 24.8%!
Iespējams, ka kešatmiņas sadalījums ir pārāk liels, kā rezultātā CPU apstrādā lielu datu apjomu.

调整 memcached Konfigurācija:

sudo nano /etc/memcached.conf

Pārskatīt:

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

Pēc tam restartējiet:

sudo systemctl restart memcached

Efekts: samaziniet Memcached procesa CPU slodzi un uzlabojiet kešatmiņas efektivitāti.

6. Iespējojiet Nginx statisko resursu saglabāšanu kešatmiņā

Daudzas reizes PHP apstrādā pieprasījumus, kas satur lielu skaitu CSS, JS, attēli, bet šiem failiem vispār nav nepieciešama PHP parsēšana!
Risinājums? Izmantojiet Nginx, lai saglabātu statiskos resursus kešatmiņā!

Rediģēt Nginx konfigurāciju:

sudo nano /etc/nginx/nginx.conf

添加:

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

Pēc saglabāšanas restartējiet Nginx:

sudo systemctl restart nginx

Efekts: samaziniet reižu skaitu, kad PHP apstrādā statiskos failus, un samaziniet CPU lietojumu.

7. Atrodiet PHP skriptu, kas izmanto visvairāk CPU

Ja pēc optimizācijas CPU joprojām ir pārāk augsts, iespējams, daži PHP skripti darbojas mežonīgi.
Izmantojiet šo komandu, lai uzzinātu PHP procesu ar vislielāko CPU lietojumu:

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

Ja atklājat, ka PHP skripts aizņem pārāk daudz CPU, varat to iznīcināt tieši:

kill -9 PID

Efekts:Precīzi identificējiet "sliktos ābolus" un neļaujiet PHP procesam ilgstoši aizņemt centrālo procesoru.

Kopsavilkums: 7 veidi, kā optimizēt PHP-FPM

Ierobežojiet PHP-FPM procesu skaitu, lai novērstu CPU pārslodzi
Iespējot OPCache, samaziniet atkārtotu PHP koda parsēšanu
PHP taimauta iestatīšana, lai novērstu ilgstošu darbību
MySQL lēno vaicājumu pārbaude, optimizēt datu bāzes vaicājumu veiktspēju
Pielāgojiet atmiņā saglabāto atmiņu, samazinot CPU slodzi
Iespējot Nginx statisko kešatmiņu, samazinot PHP parsēšanas slogu
Atrodiet augsta CPU lietojuma PHP skriptus, precīza optimizācija

noslēgumā

Servera optimizācija ir kā fitness, jums ir jāveic precīzas korekcijas un nav jājaucas!
Pēc vairākām optimizācijām mana servera CPU slodze ir samazinājusies no 80% līdz 15%, vietne atveras divreiz ātrāk!
Ja jūsu serverim ir līdzīgas problēmas, izmēģiniet šīs metodes! 💪

???? Rīkojieties tūlīt! Optimizējiet savu PHP-FPM un saglabājiet savu serveri! 🚀

发表 评论

Jūsu e-pasta adrese netiks publicēta. 必填 项 已 用 * Etiķete

Ritiniet uz augšu