Article Directory
- 1 PHP-FPM ашыкча жүктөлүшүнүн негизги себеби
- 2 PHP-FPM процессинин бассейнин оптималдаштыруу (негизги параметрди тууралоо)
- 3 Каалаган убакта прогресске көз салуу үчүн PHP-FPM абалын көзөмөлдөөнү иштетиңиз
- 4 Көйгөйлөрдү тез чечүү үчүн PHP-FPM журналдарын оптималдаштырыңыз
- 5 Эстутумдун агып кетишинин алдын алуу үчүн PHP-FPMди үзгүлтүксүз өчүрүп күйгүзүңүз
- 6 Эгер көйгөй чечилбесечи? Андан ары оптималдаштыруу!
- 7 Кыскача маалымат: PHP-FPM оптималдаштыруу жана веб-сайт мындан ары бузулбайт!
Мындай абалга туш болдуңуз беле?Вебсайтка кирүү күтүлбөгөн жерден басаңдап, ал тургай 500 катага алып келди PHP-FPM кайра күйгүзүлгөндөн кийин, ал кадимки абалына кайтып келди., бирок көйгөй бир аздан кийин кайра пайда болот? Бул абдан капалантат!
Эмне үчүн мындай болуп жатат?Чынында, бул адаттаPHP-FPM процессинин пулу туура конфигурацияланган эмес же сервер ресурстары жетишсиз.менен шартталган. Бүгүн биз кылдат оптималдаштырабыз HestiaCP Капоттун астындагы PHP-FPM веб-сайтты аскадай туруктуу кылат!
PHP-FPM ашыкча жүктөлүшүнүн негизги себеби
PHP-FPM бул аПроцесс менеджери, ал динамикалык суроо-талаптарды аткаруу үчүн жооптуу. Эгер конфигурация акылга сыярлык эмес болсо, ал төмөнкүлөргө алып келиши мүмкүн:
- Сервер ресурстары түгөнүп калды, PHP-FPM жаңы суроо-талаптарга өз убагында жооп бере албай калышына алып келет;
- Өтө аз процесстер, трафик күтүлбөгөн жерден көбөйгөндө, аны убагында иштетүү мүмкүн эмес;
- Процесстин колдонулушу өтө жогору, CPU жүктөмүнүн жарылуусуна алып келет.

PHP-FPM ашыкча жүктөлгөнүн кантип билсе болот?
колдонсо болот top 或 htop 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 каналыбызга кошулуңуз!
Бөлүшүп, жакса лайк! Сиздин бөлүшүүлөрүңүз жана лайктарыңыз биздин туруктуу мотивациябыз!