Po výbere šablóny „phpfcgid“ pre webovú službu VestaCP veľké množstvo procesov PHP-CGI rýchlo vyčerpalo pamäť.
- V podstate mi dochádzala pamäť niekoľko hodín po reštartovaní servera.
- Predtým nečinný proces PHP-CGI nie je zabitý a jeden proces beží takmer 1 podprocesov, ktoré spotrebúvajú najmenej 20 miliónov pamäte.
Používa sa v SSH htop (vyžaduje sa inštalácia), môžete si pozrieť tento stav ▼

Ak sa pri použití príkazu htop zobrazí chybové hlásenie „-bash: htop: príkaz nenájdený“, riešenie nájdete v tomto návode ▼
Veľký počet procesov PHP-CGI spôsoboval rýchle vyčerpanie pamäte. Problém spočíva v tom, že VestaCP používa neoptimalizovanú konfiguráciu v šablóne phpfcgid pre CentOS .
- VestaCP v šablóne phpfcgid nastavte 1 proces PHP-CGI na spustenie až 20 podriadených procesov.
Pozri /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Riadok 13 súboru:
export PHP_FCGI_CHILDREN=20
Takéto nastavenie však porušuje varovanie Apache v dokumentácii správy podprocesov PHP:
Správa podradených procesov PHP ( PHP_FCGI_CHILDREN ) by mala byť vždy vypnutá pomocou mod_fcgid, ktorý bude smerovať iba jednu požiadavku naraz do procesov aplikácie, ktoré vytvoril; preto žiadne podradené procesy vytvorené PHP nebudú efektívne použité. (Okrem toho, podradené procesy PHP nemusia byť správne ukončené.) Štandardne a s nastavením premennej prostredia PHP_FCGI_CHILDREN=0 je správa podradených procesov PHP vypnutá.
Pretože v module mod_fcgid Apache môže proces PHP-CGI odpovedať iba na jednu požiadavku a spustiť sa naraz, podriadený proces PHP-CGI je veľmi neefektívny.
Preto by sa nastavenia pre správu podprocesov PHP mali vypnúť priamo ▼
PHP_FCGI_CHILDREN=0
Zároveň, ak už máte vygenerovaného virtuálneho hostiteľa, musíte upraviť konfiguračné súbory všetkých webových stránok ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Po otvorení konfiguračného súboru fcgi-starter vložte nasledujúce ▼
export PHP_FCGI_CHILDREN=20
Upravené na ▼
export PHP_FCGI_CHILDREN=0
- Po úprave bude správa podprocesov PHP vypnutá v režime mod_fcgid.
- Proces PHP-CGI už nebude vytvárať podradené procesy, čo môže ušetriť veľa pamäte.
VestaCP tiež nenastavuje mechanizmus ukončenia pre nečinné procesy:
- Všetky novo spustené procesy PHP-CGI budú naďalej používať pamäť, kým sa systém nereštartuje.
Ak to chcete vyriešiť, pridajte konfiguračný súbor mod_fcgid /etc/httpd/conf.d/fcgid.conf Do ▼ pridajte nasledujúce nastavenia
FcgidIdleTimeout 120
- Nastavte Apache na automatické zabíjanie procesov PHP-CGI, ktoré sú nečinné 2 minúty (120 sekúnd).
Po dokončení nastavenia reštartujte službu Apache ▼
service httpd restart
Po reštarte služby sa už nebudú zobrazovať stovky procesov PHP-CGI, ktoré boli predtým zobrazené v HTOP.
Jeden proces PHP-CGI pre jedného používateľa Vesta CP zvyčajne spotrebuje 30 až 40 MB pamäte, čo je pre hostiteľa so systémom Linux viac než dosť.
Optimalizácia konfigurácie obsahu a šablón Vesta je preto kľúčová pre online marketérov , ktorí chcú vyniknúť v SEO .
Na paneli VestaCP ▼ si môžete pozrieť nasledujúce návody
Dúfame, že článok „Optimalizácia konfigurácie šablóny VestaCP phpfcgid pre chybu „Viacero procesov, chyba vyčerpania pamäte 500““, ktorý bol zdieľaný na blogu Chen Weilianga ( https://www.chenweiliang.com/ ), vám bude užitočný.
Neváhajte a zdieľajte odkaz na tento článok: https://www.chenweiliang.com/cwl-735.html



