Каталог артыкулаў
- 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 - гэта aДыспетчар працэсаў, які адказвае за апрацоўку дынамічных запытаў. Калі канфігурацыя неразумная, гэта можа прывесці да:
- Рэсурсы сервера вычарпаныя, у выніку чаго PHP-FPM не можа своечасова адказаць на новыя запыты;
- Занадта мала працэсаў, калі трафік раптоўна павялічваецца, ён не можа быць своечасова апрацаваны;
- Выкарыстанне працэсу занадта высокае, у выніку чаго загрузка ЦП выбухне.

Як вызначыць, што 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!
Падзяліцеся і пастаўце лайкі, калі вам гэта падабаецца! Вашы акцыі і лайкі - наша пастаянная матывацыя!