Miután kiválasztottuk a "phpfcgid" sablont a VestaCP webszolgáltatáshoz, számos PHP-CGI folyamat gyorsan kimerítette a memóriát.
- A szerver újraindítása után néhány órára elfogyott a memóriám.
- A korábban tétlen PHP-CGI folyamat nem szűnik meg, és egy folyamat közel 1 alfolyamatot futtat, és legalább 20 M memóriát fogyaszt.
SSH-ban használják htop parancsot (telepítés szükséges), megtekintheti ezt az állapotot ▼

Ha a "-bash: htop: parancs nem található" hibaüzenetet kap a htop parancs használatakor, kérjük, olvassa el ezt az oktatóanyagot a megoldásért ▼
A PHP-CGI folyamatok nagy száma miatt a memória gyorsan kimerült. A probléma abban rejlik, hogy a VestaCP nem optimalizált konfigurációt használ a CentOS phpfcgid sablonjában.
- A VestaCP a phpfcgid sablonban állítson be 1 PHP-CGI folyamatot akár 20 gyermekfolyamat futtatására.
请 参阅 /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh A fájl 13. sora:
export PHP_FCGI_CHILDREN=20
Egy ilyen beállítás azonban sérti az Apache figyelmeztetését a PHP alfolyamatkezelési dokumentációjában:
A PHP gyermekfolyamat-kezelést ( PHP_FCGI_CHILDREN ) mindig le kell tiltani a mod_fcgid paraméterrel, amely egyszerre csak egy kérést irányít át az általa létrehozott alkalmazásfolyamatokhoz; így a PHP által létrehozott gyermekfolyamatok nem lesznek hatékonyan használva. (Ezenkívül előfordulhat, hogy a PHP gyermekfolyamatok nem fejeződnek be megfelelően.) Alapértelmezés szerint, és a PHP_FCGI_CHILDREN=0 környezeti változó beállításával , a PHP gyermekfolyamat-kezelés le van tiltva.
Mivel az Apache mod_fcgid moduljában a PHP-CGI folyamat csak egy kérésre tud válaszolni és egyszerre futni, a PHP-CGI gyermekfolyamat nagyon nem hatékony.
Ezért a PHP alfolyamatok kezelésének beállításait közvetlenül le kell tiltani ▼
PHP_FCGI_CHILDREN=0
Ugyanakkor, ha már rendelkezik generált virtuális gazdagéppel, módosítania kell az összes webhely konfigurációs fájlját ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Az fcgi-starter konfigurációs fájl megnyitása után illessze be a következő ▼ fájlt
export PHP_FCGI_CHILDREN=20
Módosítsa ▼-ra
export PHP_FCGI_CHILDREN=0
- Módosítás után a PHP alfolyamatok kezelése mod_fcgid módban ki lesz kapcsolva.
- A PHP-CGI folyamat többé nem hoz létre gyermekfolyamatokat, ami sok memóriát takaríthat meg.
Ezenkívül a VestaCP nem állít be leállítási mechanizmust a tétlen folyamatokhoz:
- Minden újonnan végrehajtott PHP-CGI folyamat továbbra is memóriát használ a rendszer újraindításáig.
Ennek javításához egyszerűen adja hozzá a mod_fcgid konfigurációs fájlt /etc/httpd/conf.d/fcgid.conf Adja hozzá a következő beállításokat a ▼-ban
FcgidIdleTimeout 120
- Állítsa be az Apache-t, hogy automatikusan leállítsa a 2 percig (120 másodpercig) tétlen PHP-CGI folyamatokat.
A beállítás befejezése után indítsa újra az Apache szolgáltatást ▼
service httpd restart
A szolgáltatás újraindítása után a HTOP-ban korábban megjelenített több száz PHP-CGI-folyamat többé nem jelenik meg.
Általában egyetlen Vesta CP felhasználó PHP-CGI folyamata 30-40 MB memóriát fogyaszt, ami több mint elég egy Linux gazdagép számára.
Ezért a Vesta tartalom és sablonok konfigurációjának optimalizálása kulcsfontosságú az online marketingszakemberek számára , akik kiemelkedően szeretnének teljesíteni a SEO- ban.
Tekintse meg a következő VestaCP panellel kapcsolatos oktatóanyagokat ▼
Remélhetőleg hasznosnak találod a Chen Weiliang blogján ( https://www.chenweiliang.com/ ) megosztott „A VestaCP phpfcgid sablonkonfiguráció optimalizálása „Több folyamat, memóriakimerülés 500-as hibája esetén” című cikket .
Nyugodtan oszd meg a cikk linkjét: https://www.chenweiliang.com/cwl-735.html



