Հոդվածների տեղեկատու
- 1 1. Սահմանափակել php-fpm գործընթացների քանակը
- 2 2. Միացնել OPCache-ը (PHP-ի աշխատանքը բարելավելու համար)
- 3 3. Սահմանափակել PHP սկրիպտների առավելագույն կատարման ժամանակը
- 4 4. Ստուգեք MySQL-ի դանդաղ հարցումները
- 5 5. Սահմանափակեք Memcached ռեսուրսների օգտագործումը
- 6 6. Միացնել Nginx-ը ստատիկ ռեսուրսների քեշը պահելու համար
- 7 7. Գտեք PHP սկրիպտը, որն օգտագործում է ամենաշատ պրոցեսորը
- 8 Ամփոփում՝ PHP-FPM-ի օպտիմալացման 7 եղանակ
- 9 եզրակացության մեջ
HestiaCP Սերվերի պրոցեսորի աճը? PHP-FPM գործընթացի օպտիմալացման ամբողջական ուղեցույց:

Արդյո՞ք սերվերի պրոցեսորը միշտ 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 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_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 ալիքին։
Տարածեք և հավանեք, եթե ձեզ դուր եկավ: Ձեր կիսումներն ու հավանումները մեր շարունակական շարժառիթն են: