Després de seleccionar la plantilla "phpfcgid" per al servei web VestaCP , un gran nombre de processos PHP-CGI van esgotar ràpidament la memòria.
- Bàsicament em vaig quedar sense memòria durant unes hores després de reiniciar el servidor.
- El procés PHP-CGI anteriorment inactiu no s'elimina i un procés executa prop de 1 subprocessos, consumint almenys 20 M de memòria.
S'utilitza en SSH htop comanda (instal·lació necessària), podeu veure aquest estat ▼

Si rebeu un missatge d'error "-bash: htop: command not found" quan feu servir l'ordre htop, consulteu aquest tutorial per a la solució ▼
El gran nombre de processos PHP-CGI feia que la memòria s'esgotés ràpidament. El problema rau en el fet que VestaCP utilitza una configuració no optimitzada a la plantilla phpfcgid de CentOS .
- VestaCP a la plantilla phpfcgid, configureu 1 procés PHP-CGI per executar fins a 20 processos fills.
veure /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Línia 13 del fitxer:
export PHP_FCGI_CHILDREN=20
Tanmateix, aquesta configuració viola l'advertència d'Apache a la documentació de gestió de subprocés de PHP:
La gestió de processos fills de PHP ( PHP_FCGI_CHILDREN ) sempre s'ha de desactivar amb mod_fcgid, que només encaminarà una sol·licitud alhora als processos d'aplicació que ha generat; per tant, qualsevol procés fill creat per PHP no s'utilitzarà de manera efectiva. (A més, és possible que els processos fills de PHP no es finalitzin correctament.) Per defecte, i amb la variable d'entorn definida com a PHP_FCGI_CHILDREN=0 , la gestió de processos fills de PHP està desactivada.
Com que al mòdul mod_fcgid d'Apache, el procés PHP-CGI només pot respondre a una sol·licitud i executar-se alhora, el procés fill PHP-CGI és molt ineficient.
Per tant, la configuració per a la gestió de subprocés PHP s'hauria de desactivar directament ▼
PHP_FCGI_CHILDREN=0
Al mateix temps, si ja teniu un host virtual generat, haureu de modificar els fitxers de configuració de tots els llocs web ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Després d'obrir el fitxer de configuració fcgi-starter, inseriu el següent ▼
export PHP_FCGI_CHILDREN=20
Modificat a ▼
export PHP_FCGI_CHILDREN=0
- Després de la modificació, la gestió de subprocés PHP es desactivarà en mode mod_fcgid.
- El procés PHP-CGI ja no generarà processos fills, cosa que pot estalviar molta memòria.
A més, VestaCP no estableix un mecanisme de terminació per als processos inactius:
- Tots els processos PHP-CGI recentment executats continuaran utilitzant memòria fins que es reiniciï el sistema.
Per solucionar-ho, només cal que afegiu el fitxer de configuració mod_fcgid /etc/httpd/conf.d/fcgid.conf Afegiu la configuració següent a ▼
FcgidIdleTimeout 120
- Configureu Apache per matar automàticament els processos PHP-CGI que estiguin inactius durant 2 minuts (120 segons).
Un cop finalitzada la configuració, reinicieu el servei Apache ▼
service httpd restart
Després de reiniciar el servei, els centenars de processos PHP-CGI que es mostraven anteriorment a HTOP ja no es mostraran.
Normalment, un únic procés PHP-CGI per a un únic usuari de Vesta CP consumeix entre 30 i 40 MB de memòria, cosa que és més que suficient per a un amfitrió Linux .
Per tant, optimitzar la configuració del contingut i les plantilles de Vesta és crucial per als professionals del màrqueting en línia que volen excel·lir en SEO .
Podeu fer una ullada als tutorials següents al tauler VestaCP ▼
Esperem que l'article "Optimització de la configuració de la plantilla phpfcgid de VestaCP per a 'Múltiples processos, error d'esgotament de memòria 500'" compartit al blog de Chen Weiliang ( https://www.chenweiliang.com/ ) us sigui útil.
No dubteu a compartir l'enllaç d'aquest article: https://www.chenweiliang.com/cwl-735.html



