Пасля выбару шаблону "phpfcgid" для вэб-сэрвісу VestaCP вялікая колькасць працэсаў PHP-CGI хутка вычарпала аператыўную памяць.
- Пасля перазапуску сервера ў мяне практычна не хапала памяці на працягу некалькіх гадзін.
- Раней бяздзейны працэс PHP-CGI не спыняецца, і адзін працэс запускае каля 1 падпрацэсаў, спажываючы не менш за 20 МБ памяці.
Выкарыстоўваецца ў SSH htop (патрабуецца ўстаноўка), вы можаце праглядзець гэты статус ▼

Калі вы атрымліваеце паведамленне пра памылку «-bash: htop: каманда не знойдзена» пры выкарыстанні каманды htop, праглядзіце гэты падручнік для рашэння ▼
Вялікая колькасць працэсаў PHP-CGI прывяла да хуткага вычарпання памяці. Праблема заключаецца ў тым, што VestaCP выкарыстоўвае неаптымізаваную канфігурацыю ў шаблоне phpfcgid CentOS .
- VestaCP у шаблоне phpfcgid усталюйце 1 працэс PHP-CGI для запуску да 20 даччыных працэсаў.
请 参阅 /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Радок 13 файла:
export PHP_FCGI_CHILDREN=20
Аднак такая ўстаноўка парушае папярэджанне Apache у дакументацыі па кіраванні падпрацэсам PHP:
Кіраванне даччынымі працэсамі PHP ( PHP_FCGI_CHILDREN ) заўсёды павінна быць адключана з дапамогай mod_fcgid, які будзе накіроўваць толькі адзін запыт за раз да працэсаў прыкладання, якія ён спарадзіў; такім чынам, любыя даччыныя працэсы, створаныя PHP, не будуць эфектыўна выкарыстоўвацца. (Акрамя таго, даччыныя працэсы PHP могуць не завяршыцца належным чынам.) Па змаўчанні, і пры ўсталёўцы зменнай асяроддзя PHP_FCGI_CHILDREN=0 , кіраванне даччынымі працэсамі PHP адключана.
Паколькі ў модулі mod_fcgid Apache працэс PHP-CGI можа адказваць толькі на адзін запыт і працаваць адначасова, даччыны працэс PHP-CGI вельмі неэфектыўны.
Такім чынам, налады кіравання падпрацэсамі PHP павінны быць адключаны непасрэдна ▼
PHP_FCGI_CHILDREN=0
У той жа час, калі ў вас ужо ёсць створаны віртуальны хост, вам трэба змяніць файлы канфігурацыі ўсіх вэб-сайтаў ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Пасля адкрыцця файла канфігурацыі fcgi-starter устаўце наступны ▼
export PHP_FCGI_CHILDREN=20
Зменена на ▼
export PHP_FCGI_CHILDREN=0
- Пасля мадыфікацыі кіраванне падпрацэсамі PHP будзе адключана ў рэжыме mod_fcgid.
- Працэс PHP-CGI больш не спараджае даччыныя працэсы, што можа зэканоміць шмат памяці.
Акрамя таго, VestaCP не ўсталёўвае механізм спынення для бяздзейных працэсаў:
- Усе нядаўна выкананыя працэсы PHP-CGI будуць працягваць выкарыстоўваць памяць, пакуль сістэма не будзе перазагружана.
Каб выправіць гэта, проста дадайце канфігурацыйны файл mod_fcgid /etc/httpd/conf.d/fcgid.conf Дадайце наступныя налады ў ▼
FcgidIdleTimeout 120
- Наладзьце Apache на аўтаматычнае спыненне працэсаў PHP-CGI, якія прастойваюць 2 хвіліны (120 секунд).
Пасля завяршэння ўстаноўкі перазапусціце службу Apache ▼
service httpd restart
Пасля перазапуску службы сотні працэсаў PHP-CGI, якія раней адлюстроўваліся ў HTOP, больш не будуць адлюстроўвацца.
Звычайна адзін працэс PHP-CGI для аднаго карыстальніка Vesta CP спажывае ад 30 да 40 МБ памяці, чаго больш чым дастаткова для хоста Linux.
Такім чынам, аптымізацыя канфігурацыі кантэнту і шаблонаў Vesta мае вырашальнае значэнне для інтэрнэт-маркетолагаў , якія жадаюць дасягнуць поспеху ў SEO .
Вы можаце зірнуць на наступныя падручнікі на панэлі VestaCP ▼
Спадзяюся, артыкул «Аптымізацыя канфігурацыі шаблону VestaCP phpfcgid для «Некалькі працэсаў, памылка перавышэння памяці 500»», апублікаваны ў блогу Чэня Вэйляна ( https://www.chenweiliang.com/ ), будзе вам карысным.
Не саромейцеся падзяліцца спасылкай на гэты артыкул: https://www.chenweiliang.com/cwl-735.html



