HestiaCP php-fpm գործընթացը խլում է CPU-ի մեծ ռեսուրսներ Ինչպես կարող եմ այն ​​օպտիմալացնել:

HestiaCP Սերվերի պրոցեսորի աճը? PHP-FPM գործընթացի օպտիմալացման ամբողջական ուղեցույց:

HestiaCP php-fpm գործընթացը խլում է CPU-ի մեծ ռեսուրսներ Ինչպես կարող եմ այն ​​օպտիմալացնել:

Արդյո՞ք սերվերի պրոցեսորը միշտ 100% է: Օդափոխիչը վայրենի պտտո՞ւմ է: Արդյո՞ք կայքի բացման արագությունը դանդաղում է:Մեղավորը կարող է լինել php-fpm:

Վերջերս հայտնաբերեցի chenweiliang.com Այս PHP լողավազան php-fpm Պրոցեսը խելահեղորեն կուլ տվեց պրոցեսորը, և սերվերը խափանվեց։

Սերվերը վերակենդանացնելու համար ես փորձեցի մի շարք օպտիմալացման մեթոդներ և վերջապես հաջողվեց կրճատել պրոցեսորի օգտագործումը։

Հիմա, եկեք կիսվենք սա Արդյունավետ օպտիմիզացման ուղեցույց! 🚀

1. Սահմանափակել php-fpm գործընթացների քանակը

php-fpm լռելյայն կարգավորումները կարող ենանսահմանափակԳործընթացը ստեղծվում է անվերահսկելի, ինչը հանգեցնում է սերվերի պրոցեսորի ծանրաբեռնվածության:

Այն օպտիմալացնելու համար մենք կարող ենք փոփոխել գործընթացների կառավարման պարամետրերը։

միացնել php-fpm Կազմաձևման ֆայլեր.

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Փոխեք ձեր PHP տարբերակը, օրինակ՝ PHP8.3, և այն դարձրեք հետևյալը՝/etc/php/8.3/fpm/pool.d/www.conf

Հարցում ուղարկել HestiaCP-ի կողմից սահմանված PHP տարբերակի վերաբերյալ

v-list-web-domain user domain.com

Օրինակ ՝

v-list-web-domain abc chenweiliang.com

Ելքում դուք կտեսնեք նման բան.

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Սա նշանակում է, որ կայքը օգտագործում է PHP 8.3.

Գտեք և փոփոխեք հետևյալ պարամետրերը.

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

Այնուհետև վերագործարկեք php-fpm Այն արդյունավետ դարձնելու համար.

sudo systemctl restart php-fpm

էֆեկտՍահմանափակեք պրոցեսների քանակը՝ կանխելու համար php-fpm պրոցեսորի ռեսուրսների չափից ավելի սպառումը:

2. Միացնել OPCache-ը (PHP-ի աշխատանքը բարելավելու համար)

PHP-ն վերափոխում է կոդը ամեն անգամ, երբ այն գործարկվում է, ինչը ռեսուրսների վատնում է:
Լուծումը. Միացրեք OPCache-ը և պահեք ձեր PHP կոդը:

编辑 php.ini փաստաթուղթ:

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

Ավելացնել կամ փոփոխել հետևյալը.

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

Պահելուց հետո վերագործարկեք PHP գործընթացը.

sudo systemctl restart php8.3-fpm

էֆեկտՆվազեցրեք PHP կոդի կրկնվող վերլուծությունը, նվազեցրեք պրոցեսորի ծանրաբեռնվածությունը և բարելավեք կատարման արդյունավետությունը:

3. Սահմանափակել PHP սկրիպտների առավելագույն կատարման ժամանակը

Եթե ​​PHP սկրիպտը շատ երկար աշխատի, պրոցեսորի ռեսուրսները շարունակաբար զբաղված կլինեն:
Խելամիտ ժամկետի սահմանումը կարող է կանխել «համառ» գործընթացները երկար ժամանակով զբաղեցնել սերվերը:

միացնել php.ini փաստաթուղթ:

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

Փոփոխեք հետևյալ պարամետրերը.

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

Այնուհետև վերագործարկեք PHP գործընթացը.

sudo systemctl restart php-fpm

էֆեկտԿանխել PHP գործընթացների երկարատև աշխատանքը և նվազեցնել պրոցեսորի ռեսուրսների վատնումը:

4. Ստուգեք MySQL Դանդաղ հարցում

PHP-FPM-ն ունի բարձր բեռ,Դա կարող է առաջանալ դանդաղ SQL հարցման պատճառով:
Միացնել MySQL Դանդաղ հարցումների մատյան, պարզեք SQL հայտարարությունները, որոնք հետ են պահում:

Խմբագրել MySQL կազմաձևման ֆայլը.

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 秒的查询会被记录

Պահելուց հետո վերագործարկեք MySQL.

sudo systemctl restart mysql

Ապա օգտագործեք mysqldumpslow Վերլուծել դանդաղ հարցումները.

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

էֆեկտՊարզեք ժամանակատար SQL հարցումները, օպտիմիզացրեք տվյալների բազայի աշխատանքը և անուղղակիորեն նվազեցրեք PHP-ի բեռը:

5. Սահմանափակեք Memcached ռեսուրսների օգտագործումը

Նայելով գործընթացների ցանկին՝ ես գտա Memcached գործընթացի CPU-ի օգտագործումը կազմում է 24.8%:
Հնարավոր է, որ քեշի տեղաբաշխումը չափազանց մեծ է, ինչի պատճառով պրոցեսորը մեծ քանակությամբ տվյալներ է մշակում:

调整 memcached Կոնֆիգուրացիա:

sudo nano /etc/memcached.conf

Վերանայել.

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

Այնուհետև վերագործարկեք.

sudo systemctl restart memcached

էֆեկտՆվազեցրեք Memcached գործընթացի CPU-ի ծանրաբեռնվածությունը և բարելավեք քեշի արդյունավետությունը:

6. Միացնել Nginx-ը ստատիկ ռեսուրսների քեշը պահելու համար

Շատ անգամ PHP-ն մշակում է մեծ թվով հարցումներ CSS, JS, պատկերներ, բայց այս ֆայլերն ընդհանրապես PHP վերլուծության կարիք չունեն:
Լուծումը. Օգտագործեք Nginx ստատիկ ռեսուրսները քեշելու համար:

Խմբագրել Nginx կոնֆիգուրացիան.

sudo nano /etc/nginx/nginx.conf

Հավելում:

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

Պահելուց հետո վերագործարկեք Nginx-ը.

sudo systemctl restart nginx

էֆեկտՆվազեցրեք PHP-ի կողմից ստատիկ ֆայլերի մշակման դեպքերը և կրճատեք պրոցեսորի օգտագործումը:

7. Գտեք PHP սկրիպտը, որն օգտագործում է ամենաշատ պրոցեսորը

Եթե ​​օպտիմիզացումից հետո պրոցեսորը դեռ շատ բարձր է, կարող է լինել, որ որոշ PHP սկրիպտներ անխնա աշխատում են:
Օգտագործեք հետևյալ հրամանը՝ պարզելու CPU-ի ամենաբարձր օգտագործմամբ PHP գործընթացը.

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

Եթե ​​գտնում եք, որ PHP սկրիպտը չափազանց շատ CPU է վերցնում, կարող եք ուղղակիորեն սպանել այն.

kill -9 PID

էֆեկտՃշգրիտ բացահայտեք «վատ խնձորները» և կանխեք PHP գործընթացը երկար ժամանակ զբաղեցնելու պրոցեսորը:

Ամփոփում՝ PHP-FPM-ի օպտիմալացման 7 եղանակ

Սահմանափակեք PHP-FPM գործընթացների քանակը, պրոցեսորի գերբեռնվածությունը կանխելու համար
Միացնել OPCache-ը, նվազեցնել PHP կոդի կրկնվող վերլուծությունը
PHP-ի դադարի կարգավորում, երկարաժամկետ շահագործումը կանխելու համար
MySQL դանդաղ հարցումների ստուգում, օպտիմալացնել տվյալների բազայի հարցումների կատարումը
Կարգավորել Memcached հիշողությունը, նվազեցնելով պրոցեսորի ծանրաբեռնվածությունը
Միացնել Nginx ստատիկ քեշը, նվազեցնելով PHP-ի վերլուծության բեռը
Գտեք բարձր պրոցեսորի օգտագործման PHP սկրիպտներ, ճշգրիտ օպտիմալացում

եզրակացության մեջ

Սերվերի օպտիմիզացումը նման է ֆիթնեսին, դուք պետք է ճշգրիտ ճշգրտումներ կատարեք և մի խառնվեք:
Մի շարք օպտիմիզացումներից հետո իմ սերվերի պրոցեսորի բեռնվածությունը նվազել է 80% մինչև 15%, կայքը բացվում է երկու անգամ ավելի արագ։
Եթե ​​ձեր սերվերը նմանատիպ խնդիրներ ունի, փորձեք այս մեթոդները: 💪

???? Գործի առնեք հիմա: Օպտիմալացրեք ձեր PHP-FPM և պահպանեք ձեր սերվերը: 🚀

Հույս Chen Weiliang բլոգ ( https://www.chenweiliang.com/ ) կիսվել է «HestiaCP php-fpm գործընթացը խլում է CPU-ի մեծ ռեսուրսներ, ինչպե՞ս այն օպտիմալացնել: », դա կարող է օգտակար լինել ձեզ համար:

Բարի գալուստ՝ կիսելու այս հոդվածի հղումը.https://www.chenweiliang.com/cwl-32490.html

Ավելի շատ թաքնված հնարքներ բացահայտելու համար🔑, միացեք մեր Telegram ալիքին։

Տարածեք և հավանեք, եթե ձեզ դուր եկավ: Ձեր կիսումներն ու հավանումները մեր շարունակական շարժառիթն են:

 

发表 评论

Ձեր էլփոստի հասցեն չի հրապարակվի: Օգտագործվում են պահանջվող դաշտերը * Պիտակ

Ոլորել դեպի սկիզբ