HestiaCP PHP-FPM знаходзіцца пад вялікай нагрузкай? Памылка дынамічнай вэб-старонкі 500? Гэтая аптымізацыя ўступіць у сілу неадкладна!

Вы калі-небудзь сутыкаліся з такой сітуацыяй?Доступ да вэб-сайта раптоўна запаволіўся або нават прывёў да памылкі 500. Пасля перазапуску PHP-FPM ён вярнуўся да нармальнага стану., але праз некаторы час праблема з'яўляецца зноў? Гэта так расчароўвае!

Чаму так адбываецца?На самай справе, гэта звычайнаПул працэсаў PHP-FPM настроены няправільна, або рэсурсаў сервера недастаткова.выклікана. Сёння мы зоймемся грунтоўнай аптымізацыяй HestiaCP PHP-FPM пад капотам робіць вэб-сайт стабільным, як камень!

Асноўная прычына, чаму PHP-FPM перагружаны

PHP-FPM - гэта aДыспетчар працэсаў, які адказвае за апрацоўку дынамічных запытаў. Калі канфігурацыя неразумная, гэта можа прывесці да:

  • Рэсурсы сервера вычарпаныя, у выніку чаго PHP-FPM не можа своечасова адказаць на новыя запыты;
  • Занадта мала працэсаў, калі трафік раптоўна павялічваецца, ён не можа быць своечасова апрацаваны;
  • Выкарыстанне працэсу занадта высокае, у выніку чаго загрузка ЦП выбухне.

HestiaCP PHP-FPM знаходзіцца пад вялікай нагрузкай? Памылка дынамічнай вэб-старонкі 500? Гэтая аптымізацыя ўступіць у сілу неадкладна!

Як вызначыць, што PHP-FPM перагружаны?

можна выкарыстоўваць top Або htop Каманда для прагляду выкарыстання працэсара і памяці:

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
  • *Змяніце версію PHP на сваю, напрыклад, PHP8.3, і зменіце яе на наступнае:/etc/php/8.3/fpm/pool.d/www.conf

Запытаць версію PHP, усталяваную HestiaCP

v-list-web-domain user domain.com

E.g:

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 进程最大内存占用

Гэта можа перашкодзіць некаторымСкрыпты 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, каб прадухіліць працяглыя працэсыУцечкі памяці.

crontab -e

Дадайце наступнае запланаванае заданне для аўтаматычнага перазапуску PHP-FPM кожны дзень у 3 гадзіны ночы:

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

Што рабіць, калі праблема не знікне? Далейшая аптымізацыя!

Калі вы ўсё яшчэ прытрымліваецеся вышэйапісанай аптымізацыіЧасам узнікаюць 500 памылак, вы можаце працягнуць наступныя аптымізацыі:

1. Уключыце OPcache для павышэння эфектыўнасці выканання PHP

Калі 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

Эфект? Хуткасць выканання старонак 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, каб прадухіліць працяглую загрузку працэсара;
Уключыць маніторынг PHP-FPM, праглядаць загрузку працэсу ў рэжыме рэальнага часу;
Аптымізацыя часопісаў PHP-FPM, хутка ліквідаваць 500 памылак;
Рэгулярна перазапускайце PHP-FPM, прадухіліць уцечкі памяці;
Уключыць OPcache, палепшыць эфектыўнасць выканання PHP;
Аптымізацыя канфігурацыі Nginx, каб пазбегнуць праблем з тайм-аўтам.

Пасля такой аптымізацыі нагрузка на PHP-FPM значна знізіцца, а праца сайта стане больш стабільнай! 🔥

Паспрабуйце зараз! 💪🚀

Блог Hope Chen Weiliang ( https://www.chenweiliang.com/ ) падзяліўся "Нагрузка PHP-FPM на HestiaCP занадта высокая? Памылка дынамічнай вэб-старонкі 500? Гэтая аптымізацыя ўступіць у сілу неадкладна! », гэта можа быць вам карысна.

Запрашаем падзяліцца спасылкай на гэты артыкул:https://www.chenweiliang.com/cwl-32512.html

Каб адкрыць больш схаваных хітрасцяў🔑, далучайцеся да нашага канала ў Telegram!

Падзяліцеся і пастаўце лайкі, калі вам гэта падабаецца! Вашы акцыі і лайкі - наша пастаянная матывацыя!

 

发表 评论

Ваш электронны адрас не будзе апублікаваны. 必填 项 已 用 * Этыкетка

Пракрутка да пачатку