HestiaCP PHP-FPM оор жүктөп жатабы? Динамикалык веб-баракча 500 катасы? Бул оптималдаштыруу дароо күчүнө кирет!

Мындай абалга туш болдуңуз беле?Вебсайтка кирүү күтүлбөгөн жерден басаңдап, ал тургай 500 катага алып келди PHP-FPM кайра күйгүзүлгөндөн кийин, ал кадимки абалына кайтып келди., бирок көйгөй бир аздан кийин кайра пайда болот? Бул абдан капалантат!

Эмне үчүн мындай болуп жатат?Чынында, бул адаттаPHP-FPM процессинин пулу туура конфигурацияланган эмес же сервер ресурстары жетишсиз.менен шартталган. Бүгүн биз кылдат оптималдаштырабыз HestiaCP Капоттун астындагы PHP-FPM веб-сайтты аскадай туруктуу кылат!

PHP-FPM ашыкча жүктөлүшүнүн негизги себеби

PHP-FPM бул аПроцесс менеджери, ал динамикалык суроо-талаптарды аткаруу үчүн жооптуу. Эгер конфигурация акылга сыярлык эмес болсо, ал төмөнкүлөргө алып келиши мүмкүн:

  • Сервер ресурстары түгөнүп калды, PHP-FPM жаңы суроо-талаптарга өз убагында жооп бере албай калышына алып келет;
  • Өтө аз процесстер, трафик күтүлбөгөн жерден көбөйгөндө, аны убагында иштетүү мүмкүн эмес;
  • Процесстин колдонулушу өтө жогору, CPU жүктөмүнүн жарылуусуна алып келет.

HestiaCP PHP-FPM оор жүктөп жатабы? Динамикалык веб-баракча 500 катасы? Бул оптималдаштыруу дароо күчүнө кирет!

PHP-FPM ашыкча жүктөлгөнүн кантип билсе болот?

колдонсо болот tophtop CPU жана эстутумдун колдонулушун көрүү үчүн буйрук:

top -c

Төмөнкүгө окшош процесс маалыматын көрсөңүз, бул PHP-FPM жогорку жүктөп иштеп жатканын билдирет:

1669293 abc     20   0  790284 227880 185568 R  73.1   0.9   1:30.09 php-fpm: pool chenweiliang.com                                                    
1669522 abc     20   0  801924 224224 170236 R  69.9   0.9   0:59.01 php-fpm: pool chenweiliang.com

Бул процесстер процессордун 70% дан ашыгын кантип ээлеп жатканын көрдүңүзбү? Бул тез-тез кайталанса, сиздин PHP-FPM Көйгөй болсо керек!

Ошентип, серверге ашыкча жүктөлбөш үчүн PHP-FPM конфигурациясын кантип оптималдаштырсак болот?

PHP-FPM процессинин бассейнин оптималдаштыруу (негизги параметрди тууралоо)

Биринчиден, ачык php-fpm Конфигурация файлдары:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *PHP8.3 сыяктуу PHP версияңызга өзгөртүңүз жана аны төмөнкүгө өзгөртүңүз:/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.

PHP-FPM конфигурацияңызды карап көрөлү:

[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660

user = abc
group = abc

pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s

Сиз муну көрө аласыз pm Колдонулганы ondemand,Трафик күтүлбөгөн жерден көбөйгөндө, бош убакытта ресурсту колдонууну азайтса да, процесс өз убагында жооп бере албашы мүмкүн., натыйжада 500 ката.

1. PHP-FPM процессинин бассейнинин параметрлерин тууралаңыз

Эгер конфигурация колдонулса dynamicБул кээ бир жумуш процесстерин алдын ала баштоонун жана аларды суроо-талаптын көлөмүнө жараша динамикалык тууралоонун ыкмасы, ал суроо-талаптын көлөмү күтүлбөгөн жерден көбөйгөндө тезирээк жооп бере алат.

Трафиктин белгилүү бир көлөмү бар веб-сайттар үчүн колдонуу сунушталат pm = dynamicАнткени ал бош турган процесстердин белгилүү көлөмүн сактап, жогорку параллелдүүлүк учурунда 500 катаны болтурбай коё алат.

Аны кирүү көлөмү өтө төмөн жана эстутум ресурстары тар болгондо гана колдонуу сунушталат. pm = ondemand Ресурстарды үнөмдөө үчүн.

Сунушталган ondemand, жана оптималдаштыруу pm.max_children Жана башка параметрлер:

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

Эмне үчүн аны ушинтип өзгөрткүңүз келет?

  • pm = dynamic: Талаптан улам келип чыгышы мүмкүн болгон суроо-талаптарды күтпөш үчүн процесстерди ийкемдүү бөлүштүрүңүз;
  • pm.max_children = 16: Өтө аз процесстерден улам келип чыккан 500 катаны болтурбоо;
  • pm.start_servers = 5: процессти жай баштоодон качыңыз;
  • pm.max_requests = 3000:Эс тутумдун агып кетишинин алдын алуу, процессти үзгүлтүксүз кайра иштетүү.

2. Узак мөөнөттүү ээлөөнүн алдын алуу үчүн PHP скрипттеринин аткарылуу убактысын чектеңиз

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

Бул кээ бир алдын алатӨтө көп CPU колдонгон PHP скрипттери сервериңизди бузат.

Сактоодон кийин PHP процессин кайра баштаңыз:

sudo systemctl restart php8.3-fpm

Каалаган убакта прогресске көз салуу үчүн PHP-FPM абалын көзөмөлдөөнү иштетиңиз

PHP-FPM процессине мониторинг жүргүзүүнү иштетиңиз жана аны каалаган убакта көрүңүзУчурдагы активдүү процесстердин саны жана суроо-талап күтүү статусу, сервердин ашыкча жүктөлүшүнө жол бербөө үчүн.

боюнча php-fpm.conf Кошулган:

pm.status_path = /status

Андан кийин, Nginx конфигурациясы:

location /status {
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 127.0.0.1;
    deny all;
}

Ушундай жол менен, сиз болот http://yourdomain.com/status PHP-FPM аракетин карап көрүңүз!

Көйгөйлөрдү тез чечүү үчүн PHP-FPM журналдарын оптималдаштырыңыз

боюнча php-fpm.conf Төмөнкүгө кошуу:

php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s  ; 执行超过 5s 的脚本记录到日志

Ошентип, 500 ката пайда болгондо, сиз түз журналды көрө аласыз:

tail -f /var/log/php-fpm/error.log

PHP ката жөнүндө кабарлайбы же жокпу, караңыз, мисалы out of memory,script execution timeout 等.

Эстутумдун агып кетишинин алдын алуу үчүн PHP-FPMди үзгүлтүксүз өчүрүп күйгүзүңүз

өтүүгө жөндөмдүү cron Узакка созулган процесстердин алдын алуу үчүн PHP-FPMди үзгүлтүксүз кайра иштетиңизMemory Leaks.

crontab -e

PHP-FPMди күн сайын таңкы саат 3тө автоматтык түрдө өчүрүү үчүн төмөнкү пландаштырылган тапшырманы кошуңуз:

0 3 * * * /usr/sbin/service php8.3-fpm restart

Эгер көйгөй чечилбесечи? Андан ары оптималдаштыруу!

Эгерде сиз дагы эле жогорудагы оптималдаштырууну аткарсаңызКээде 500 ката пайда болот, сиз төмөнкү оптималдаштыруу менен уланта аласыз:

1. PHP аткаруунун натыйжалуулугун жогорулатуу үчүн OPcache иштетиңиз

Эгерде OPcache иштетиле элек болсо, сиз аны минтип орното аласыз (мисал катары Ubuntu колдонуп):

sudo apt install php8.3-opcache -y

Андан кийин түзөтүү php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1

Effect? PHP барагын аткаруу ылдамдыгы абдан жакшыртылды!

2. Nginx конфигурациясын оптималдаштыруу

Nginx менен байланышкан параметрлер акылга сыярлык экенин текшериңиз, мисалы fastcgi_read_timeout PHP скрипттеринин узакка созулган аткаруу убактысынан улам Nginx тарабынан токтотулушуна жол бербөө үчүн аны туура жөндөңүз:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Кыскача маалымат: PHP-FPM оптималдаштыруу жана веб-сайт мындан ары бузулбайт!

Бул оптималдаштыруудан кийин биз кандай оңдоолорду киргиздик?

✅ PHP-FPM процессинин пулун оптималдаштыруу, колдонуу ondemandЖана оптималдаштыруу pm.max_children параметр;
PHP скрипттерин аткаруу убактысын чектөө, узак мөөнөттүү CPU басып алдын алуу үчүн;
PHP-FPM мониторингин иштетүү, процесстин жүгүн реалдуу убакыт режиминде көрүү;
PHP-FPM журналдарын оптималдаштыруу, 500 катаны тез оңдоо;
PHP-FPMди үзгүлтүксүз өчүрүп күйгүзүңүз, эс тутумдун агып кетишинин алдын алуу;
OPcache иштетүү, PHP аткаруунун натыйжалуулугун жогорулатуу;
Nginx конфигурациясын оптималдаштыруу, таймаут көйгөйлөрүн болтурбоо үчүн.

Бул оптималдаштыруудан кийин, PHP-FPM жүгү абдан азаят жана веб-сайттын иштеши туруктуураак болот! 🔥

Азыр барып көрүңүз! 💪🚀

Hope Chen Weiliang блогу ( https://www.chenweiliang.com/ ) бөлүштү "HestiaCP PHP-FPM жүктөө өтө жогорубу? Динамикалык веб-баракча 500 катасы? Бул оптималдаштыруу дароо күчүнө кирет! ", бул сизге пайдалуу болушу мүмкүн.

Бул макаланын шилтемесин бөлүшүүгө кош келиңиз:https://www.chenweiliang.com/cwl-32512.html

Көбүрөөк жашыруун трюктарды ачуу үчүн🔑, биздин Telegram каналыбызга кошулуңуз!

Бөлүшүп, жакса лайк! Сиздин бөлүшүүлөрүңүз жана лайктарыңыз биздин туруктуу мотивациябыз!

 

发表 评论

Сиздин электрондук почта дарегиңиз жарыяланбайт. Милдеттүү талаалар колдонулат * 标注

Жылдыруу үчүн Top