ХестиаЦП ПХП-ФПМ је под великим оптерећењем? Грешка 500 динамичке веб странице? Ова оптимизација ступа на снагу одмах!

Да ли сте се икада сусрели са овом ситуацијом?Приступ веб локацији се изненада успорио, или је чак резултирао грешком од 500 Након поновног покретања ПХП-ФПМ-а, вратио се у нормалу., али се проблем поново појављује након неког времена? Ово је тако фрустрирајуће!

Зашто се ово дешава?У ствари, ово је обичноПХП-ФПМ скуп процеса није правилно конфигурисан или су ресурси сервера недовољни.изазвано. Данас ћемо темељно оптимизовати ХестиаЦП ПХП-ФПМ испод хаубе чини веб локацију стабилном као камен!

Основни разлог зашто је ПХП-ФПМ преоптерећен

ПХП-ФПМ је аМенаџер процеса, који је одговоран за руковање динамичким захтевима. Ако конфигурација није разумна, то може довести до:

  • Ресурси сервера су исцрпљени, што доводи до тога да ПХП-ФПМ не може благовремено да одговори на нове захтеве;
  • Премало процеса, када се промет нагло повећа, не може се на време обрадити;
  • Употреба процеса је превисока, што доводи до експлозије оптерећења ЦПУ-а.

ХестиаЦП ПХП-ФПМ је под великим оптерећењем? Грешка 500 динамичке веб странице? Ова оптимизација ступа на снагу одмах!

Како знати да ли је ПХП-ФПМ преоптерећен?

Можете користити top Или htop Команда за приказ употребе ЦПУ-а и меморије:

top -c

Ако видите информације о процесу сличне следећим, то значи да ПХП-ФПМ ради под великим оптерећењем:

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 Конфигурациони фајлови:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Промените на своју PHP верзију, као што је PHP8.3, и промените је у ово:/etc/php/8.3/fpm/pool.d/www.conf

Упитајте верзију PHP-а коју је поставио HestiaCP

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-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. Подесите ПХП-ФПМ параметре скупа процеса

Ако конфигурација користи 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. Ограничите време извршавања ПХП скрипти како бисте спречили дуготрајну заузетост

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

Ово може спречити некеПХП скрипте које користе превише ЦПУ-а могу срушити ваш сервер.

Након чувања, поново покрените ПХП процес:

sudo systemctl restart php8.3-fpm

Омогућите праћење статуса ПХП-ФПМ да бисте пратили напредак у било ком тренутку

Омогућите праћење процеса ПХП-ФПМ и погледајте га у било ком тренуткуТренутни број активних процеса и статус захтева на чекању, да бисте избегли преоптерећење сервера.

Ин php-fpm.conf Додато у:

pm.status_path = /status

Затим, Нгинк конфигурација:

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.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

Погледајте да ли ПХП пријављује грешку, као нпр out of memory,script execution timeout Чекати.

Редовно рестартујте ПХП-ФПМ да бисте спречили цурење меморије

у стању да прође cron Редовно рестартујте ПХП-ФПМ да бисте спречили да изазову дуготрајни процесиМемори Леакс.

crontab -e

Додајте следећи заказани задатак да аутоматски поново покренете ПХП-ФПМ у 3 сата ујутро сваког дана:

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

Шта ако проблем и даље постоји? Даља оптимизација!

Ако и даље пратите горњу оптимизацијуПовремено се јавља 500 грешака, можете наставити са следећим оптимизацијама:

1. Омогућите ОПцацхе да бисте побољшали ефикасност извршавања ПХП-а

Ако ОПцацхе још увек није омогућен, можете га инсталирати овако (користећи Убунту као пример):

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

Ефекат? Брзина извршавања ПХП странице је знатно побољшана!

2. Оптимизација Нгинк конфигурације

Уверите се да су параметри везани за Нгинк разумни, као нпр fastcgi_read_timeout Прилагодите га на одговарајући начин како бисте избегли да Нгинк прекине ПХП скрипте због дугог времена извршавања:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Резиме: Оптимизујте ПХП-ФПМ и веб локација се више неће рушити!

Која прилагођавања смо извршили након ове оптимизације?

✅ Оптимизација ПХП-ФПМ скупа процеса,усе ondemandИ оптимизовати pm.max_children параметар;
Ограничавање времена извршавања ПХП скрипти, да спречи дуготрајну заузетост процесора;
Омогућите ПХП-ФПМ надгледање, преглед оптерећења процеса у реалном времену;
Оптимизација ПХП-ФПМ дневника, брзо отклонити 500 грешака;
Поново покрените ПХП-ФПМ редовно, спречи цурење меморије;
Омогући ОПцацхе, побољшати ефикасност извршавања ПХП-а;
Оптимизација Нгинк конфигурације, да бисте избегли проблеме са временским ограничењем.

Након ове оптимизације, ПХП-ФПМ оптерећење ће бити знатно смањено и рад веб странице ће бити стабилнији! 🔥

Иди пробај сада! 💪🚀

Блог Хопе Цхен Веилианг ( https://www.chenweiliang.com/ ) дели „ХестиаЦП ПХП-ФПМ оптерећење је превисоко? Грешка 500 динамичке веб странице? Ова оптимизација ступа на снагу одмах! “, може вам бити од помоћи.

Добродошли да поделите везу овог чланка:https://www.chenweiliang.com/cwl-32512.html

Да бисте открили још скривених трикова🔑, добродошли да се придружите нашем Телеграм каналу!

Поделите и лајкујте ако вам се свиђа! Ваша дељења и лајкови су наша стална мотивација!

 

评论

Ваша емаил адреса неће бити објављена. Обавезна поља се користе * Ознака

Дођите на врх