HestiaCP php-fpm procesas užima daug procesoriaus išteklių. Kaip jį optimizuoti?

HestiaCP Serverio procesoriaus šuolis? Išsamus PHP-FPM proceso optimizavimo vadovas!

HestiaCP php-fpm procesas užima daug procesoriaus išteklių. Kaip jį optimizuoti?

Ar serverio CPU visada veikia 100%? Ventiliatorius sukasi pašėlusiai? Ar sulėtėja svetainės atidarymo greitis?Kaltininkas gali būti php-fpm!

Neseniai atradau chenweiliang.com Šis PHP baseinas php-fpm Procesas beprotiškai suvalgė procesorių, o serveris sugedo!

Norėdamas atgaivinti serverį, išbandžiau keletą optimizavimo metodų ir galiausiai pavyko sumažinti procesoriaus naudojimą.

Dabar pasidalinkime tuo Veiksmingo optimizavimo vadovas! 🚀

1. Apribokite php-fpm procesų skaičių

php-fpm numatytieji nustatymai galineribotasProcesas sukuriamas nekontroliuojamai, todėl serverio CPU perkraunamas.

Norėdami jį optimizuoti, galime modifikuoti procesų valdymo parametrus.

įjungti php-fpm Konfigūracijos failai:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Pakeiskite į savo PHP versiją, pvz., PHP8.3, ir pakeiskite ją į šią:/etc/php/8.3/fpm/pool.d/www.conf

Užklausti HestiaCP nustatytą PHP versiją

v-list-web-domain user domain.com

E.g .:

v-list-web-domain abc chenweiliang.com

Išvestyje pamatysite kažką panašaus į:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Tai reiškia, kad svetainė naudoja PHP 8.3.

Raskite ir pakeiskite šiuos 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 后自动退出

Tada paleiskite iš naujo php-fpm Kad jis būtų efektyvus:

sudo systemctl restart php-fpm

Efektas: apribokite procesų skaičių, kad php-fpm nenaudotų procesoriaus išteklių.

2. Įgalinkite OPCache (siekdami pagerinti PHP našumą)

PHP iš naujo peržiūri kodą kiekvieną kartą, kai jis vykdomas, o tai yra išteklių švaistymas.
Sprendimas? Įgalinkite OPCache ir išsaugokite savo PHP kodą talpykloje!

Taisyti php.ini dokumentas:

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

Pridėkite arba pakeiskite šiuos dalykus:

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

Išsaugoję iš naujo paleiskite PHP procesą:

sudo systemctl restart php8.3-fpm

Efektas: Sumažinkite kartotinį PHP kodo analizavimą, sumažinkite procesoriaus naštą ir pagerinkite vykdymo efektyvumą.

3. Apribokite maksimalų PHP scenarijų vykdymo laiką

Jei PHP scenarijus veikia per ilgai, procesoriaus ištekliai bus nuolat užimti.
Nustačius protingą skirtąjį laikotarpį, „užsispyrę“ procesai ilgą laiką neužims serverio.

įjungti php.ini dokumentas:

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

Pakeiskite šiuos parametrus:

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

Tada iš naujo paleiskite PHP procesą:

sudo systemctl restart php-fpm

Efektas: Neleiskite PHP procesams veikti ilgą laiką ir sumažinkite procesoriaus išteklių švaistymą.

4. Patikrinkite MySQL Lėta užklausa

PHP-FPM turi didelę apkrovą,Tai gali sukelti lėta SQL užklausa!
开启 MySQL Lėtas užklausų žurnalas, sužinokite SQL teiginius, kurie sulaiko.

Redaguokite MySQL konfigūracijos failą:

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

Pridėti prie:

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

Išsaugoję iš naujo paleiskite MySQL:

sudo systemctl restart mysql

Tada naudoti mysqldumpslow Analizuokite lėtas užklausas:

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

Efektas: sužinokite daug laiko reikalaujančias SQL užklausas, optimizuokite duomenų bazės našumą ir netiesiogiai sumažinkite PHP apkrovą.

5. Apribokite talpyklos išteklių naudojimą

Žvelgdamas į procesų sąrašą radau Atmintyje išsaugoto proceso procesoriaus naudojimas yra 24.8%!
Gali būti, kad talpyklos paskirstymas yra per didelis, todėl CPU apdoroja didelį duomenų kiekį.

调整 memcached Konfigūracija:

sudo nano /etc/memcached.conf

Peržiūra:

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

Tada paleiskite iš naujo:

sudo systemctl restart memcached

Efektas: Sumažinkite „Memcached“ proceso procesoriaus apkrovą ir pagerinkite talpyklos efektyvumą.

6. Įgalinkite Nginx talpykloje saugoti statinius išteklius

Daug kartų PHP apdoroja užklausas, kuriose yra daug CSS, JS, vaizdai, tačiau šiems failams iš viso nereikia analizuoti PHP!
Sprendimas? Naudokite Nginx statiniams ištekliams talpinti!

Redaguoti Nginx konfigūraciją:

sudo nano /etc/nginx/nginx.conf

Pridėti prie:

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

Išsaugoję iš naujo paleiskite „Nginx“:

sudo systemctl restart nginx

Efektas: Sumažinkite statinių failų apdorojimo kartų skaičių ir sumažinkite procesoriaus naudojimą.

7. Raskite PHP scenarijų, kuris naudoja daugiausiai procesoriaus

Jei po optimizavimo CPU vis dar per aukštas, gali būti, kad kai kurie PHP scenarijai veikia beprotiškai.
Naudokite šią komandą, kad sužinotumėte PHP procesą su didžiausiu procesoriaus naudojimu:

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

Jei pastebėsite, kad PHP scenarijus užima per daug procesoriaus, galite jį nužudyti tiesiogiai:

kill -9 PID

Efektas:Tiksliai identifikuokite „blogus obuolius“ ir neleiskite PHP procesui užimti procesoriaus ilgą laiką.

Santrauka: 7 būdai optimizuoti PHP-FPM

Apribokite PHP-FPM procesų skaičių, kad išvengtumėte procesoriaus perkrovos
Įgalinti OPCache, sumažinkite kartotinį PHP kodo analizavimą
PHP skirtojo laiko nustatymas, kad būtų išvengta ilgalaikio veikimo
Tikrinamos lėtos MySQL užklausos, optimizuoti duomenų bazės užklausos našumą
Sureguliuokite atmintyje išsaugotą atmintį, sumažinant procesoriaus apkrovą
Įgalinti Nginx statinę talpyklą, sumažinant PHP analizavimo naštą
Raskite daug procesoriaus naudojimo PHP scenarijus, tikslus optimizavimas

Apibendrinant

Serverio optimizavimas yra kaip kūno rengyba, reikia tiksliai sureguliuoti ir nesijaudinti!
Po daugybės optimizacijų mano serverio procesoriaus apkrova sumažėjo 80% iki 15%, svetainė atsidaro dvigubai greičiau!
Jei jūsų serveris turi panašių problemų, išbandykite šiuos metodus! 💪

👉 Imkitės veiksmų dabar! Optimizuokite savo PHP-FPM ir išsaugokite serverį! ????

发表 评论

Jūsų el. pašto adresas nebus skelbiamas. Naudojami privalomi laukai * Etiketė

Straipsnių katalogas
Pereikite į viršų