HestiaCP php-fpm protsess võtab palju protsessori ressursse. Kuidas seda optimeerida?

HestiaCP Serveri protsessori tõus? Täielik juhend PHP-FPM protsessi optimeerimiseks!

HestiaCP php-fpm protsess võtab palju protsessori ressursse. Kuidas seda optimeerida?

Kas serveri protsessor on alati 100% peal? Ventilaator pöörleb metsikult? Kas veebisaidi avamise kiirus aeglustub?Süüdlane võib olla php-fpm!

Hiljuti avastasin chenweiliang.com See PHP bassein php-fpm Protsess sõi meeletult protsessorit ja server jooksis kokku!

Serveri taaselustamiseks proovisin mitmeid optimeerimismeetodeid ja lõpuks õnnestus protsessori kasutust vähendada.

Nüüd jagame seda Tõhusa optimeerimise juhend!🚀

1. Piirake php-fpm protsesside arvu

php-fpm vaikeseaded võivadpiiramatuProtsess luuakse kontrollimatult, põhjustades serveri CPU ülekoormamise.

Selle optimeerimiseks saame muuta protsessihalduse parameetreid.

Avatud php-fpm Konfiguratsioonifailid:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Mine oma PHP versioonile, näiteks PHP8.3, ja muuda see selliseks:/etc/php/8.3/fpm/pool.d/www.conf

Päringu esitamine HestiaCP poolt määratud PHP versiooni kohta

v-list-web-domain user domain.com

E.g:

v-list-web-domain abc chenweiliang.com

Väljundis näete midagi sellist:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

See tähendab, et sait kasutab PHP 8.3.

Otsige üles ja muutke järgmisi parameetreid:

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

Seejärel taaskäivitage php-fpm Selle tõhusaks muutmiseks:

sudo systemctl restart php-fpm

Mõju: piirake protsesside arvu, et php-fpm ei kulutaks üle protsessori ressursse.

2. Lubage OPCache (PHP jõudluse parandamiseks)

PHP analüüsib koodi uuesti iga kord, kui see käivitatakse, mis on ressursside raiskamine.
Lahendus? Lubage OPCache ja salvestage oma PHP-kood vahemällu!

Jutt php.ini dokument:

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

Lisage või muutke järgmist:

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

Pärast salvestamist taaskäivitage PHP protsess:

sudo systemctl restart php8.3-fpm

Mõju: Vähendage PHP-koodi korduvat sõelumist, vähendage protsessori koormust ja parandage täitmise tõhusust.

3. Piirake PHP skriptide maksimaalset täitmisaega

Kui PHP-skript töötab liiga kaua, on protsessori ressursid pidevalt hõivatud.
Mõistliku ajalõpu perioodi määramine võib takistada "kangekaelsete" protsesside hõivamist serveris pikka aega.

Avatud php.ini dokument:

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

Muutke järgmisi parameetreid:

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

Seejärel taaskäivitage PHP protsess:

sudo systemctl restart php-fpm

Mõju: takistada PHP protsesside pikaajalist töötamist ja vähendada CPU ressursi raiskamist.

4. Kontrollige MySQL Aeglane päring

PHP-FPM on suure koormusega,Selle põhjuseks võib olla aeglane SQL-päring!
Avatud MySQL Aeglane päringulogi, saate teada SQL-laused, mis takistavad.

Redigeerige MySQL-i konfiguratsioonifaili:

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

Lisa:

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

Pärast salvestamist taaskäivitage MySQL:

sudo systemctl restart mysql

Seejärel kasutage mysqldumpslow Analüüsige aeglaseid päringuid:

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

Mõju: Uurige välja aeganõudvad SQL-päringud, optimeerige andmebaasi jõudlust ja vähendage kaudselt PHP koormust.

5. Piirake vahemällu salvestatud ressursside kasutamist

Protsesside loendit vaadates leidsin Vahemällu salvestatud protsessi protsessori kasutus on 24.8%!
Võib juhtuda, et vahemälu eraldamine on liiga suur, mistõttu protsessor töötleb suurt hulka andmeid.

调整 memcached Konfiguratsioon:

sudo nano /etc/memcached.conf

Muuda üle:

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

Seejärel taaskäivitage:

sudo systemctl restart memcached

Mõju: vähendage Memcached protsessi CPU koormust ja parandage vahemälu tõhusust.

6. Lubage Nginx staatiliste ressursside vahemällu salvestada

Paljudel juhtudel töötleb PHP taotlusi, mis sisaldavad suurt hulka CSS, JS, pildid, kuid need failid ei vaja PHP parsimist üldse!
Lahendus? Kasutage staatiliste ressursside vahemällu salvestamiseks Nginxit!

Redigeerige Nginxi konfiguratsiooni:

sudo nano /etc/nginx/nginx.conf

Lisa:

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

Pärast salvestamist taaskäivitage Nginx:

sudo systemctl restart nginx

Mõju: Vähendage PHP staatiliste failide töötlemise kordade arvu ja vähendage protsessori kasutust.

7. Leidke PHP-skript, mis kasutab kõige rohkem protsessorit

Kui protsessor on pärast optimeerimist endiselt liiga kõrge, võib juhtuda, et mõned PHP-skriptid töötavad metsikult.
Kasutage järgmist käsku, et teada saada kõige suurema CPU kasutusega PHP-protsess:

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

Kui leiate, et PHP-skript võtab liiga palju protsessorit, saate selle otse hävitada.

kill -9 PID

Mõju:Tuvastage täpselt "halvad õunad" ja vältige PHP protsessi pikka aega CPU hõivamist.

Kokkuvõte: 7 võimalust PHP-FPM optimeerimiseks

Piirake PHP-FPM protsesside arvu, et vältida CPU ülekoormust
Luba OPCache, vähendage PHP-koodi korduvat sõelumist
PHP ajalõpu seadistamine, et vältida pikaajalist töötamist
MySQL aeglaste päringute kontrollimine, optimeerige andmebaasi päringu jõudlust
Reguleerige vahemällu salvestatud mälu, vähendades protsessori koormust
Nginxi staatilise vahemälu lubamine, vähendades PHP sõelumiskoormust
Otsige suure protsessori kasutusega PHP-skripte, täpne optimeerimine

Kokkuvõtteks

Serveri optimeerimine on nagu fitness, peate tegema täpseid kohandusi ja ärge segage!
Pärast mitmeid optimeerimisi on minu serveri protsessori koormus langenud 80% kuni 15%, avaneb veebisait kaks korda kiiremini!
Kui teie serveril on sarnaseid probleeme, proovige neid meetodeid! 💪

👉 Hakka kohe tegutsema! Optimeerige oma PHP-FPM ja salvestage oma server! 🚀

发表 评论

您的邮箱地址不会被公开. Kasutatakse kohustuslikke välju * Silt

Leidke Top