Etter at malen «phpfcgid» ble valgt for VestaCP -webtjenesten, ble minnet raskt brukt opp av et stort antall PHP-CGI-prosesser.
- Jeg var i utgangspunktet tom for minne i noen timer etter at jeg startet serveren på nytt.
- Den tidligere inaktive PHP-CGI-prosessen blir ikke drept, og en prosess kjører nesten 1 underprosesser, som bruker minst 20M minne.
Brukes i SSH htop kommando (installasjon kreves), kan du se denne statusen ▼

Hvis du får en feilmelding "-bash: htop: kommando ikke funnet" når du bruker htop-kommandoen, se denne veiledningen for løsningen ▼
Det store antallet PHP-CGI-prosesser førte til at minnet raskt ble brukt opp. Problemet ligger i at VestaCP bruker en uoptimalisert konfigurasjon i CentOS phpfcgid-malen.
- VestaCP i phpfcgid-malen, sett 1 PHP-CGI-prosess til å kjøre opptil 20 underordnede prosesser.
se /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Linje 13 i filen:
export PHP_FCGI_CHILDREN=20
Imidlertid bryter et slikt oppsett Apaches advarsel i PHP-underprosessadministrasjonsdokumentasjonen:
PHP-barneprosessadministrasjon ( PHP_FCGI_CHILDREN ) bør alltid deaktiveres med mod_fcgid, som bare ruter én forespørsel om gangen til applikasjonsprosesser den har startet. Dermed vil ikke barneprosesser opprettet av PHP bli brukt effektivt. (I tillegg kan det hende at PHP-barneprosessene ikke avsluttes riktig.) Som standard, og med miljøvariabelen PHP_FCGI_CHILDREN=0 , er PHP-barneprosessadministrasjon deaktivert.
Fordi i Apaches mod_fcgid-modul kan PHP-CGI-prosessen bare svare på én forespørsel og kjøre om gangen, er PHP-CGI-underordnet prosess veldig ineffektiv.
Derfor bør innstillingene for PHP-delprosessadministrasjon deaktiveres direkte ▼
PHP_FCGI_CHILDREN=0
Samtidig, hvis du allerede har en generert virtuell vert, må du endre konfigurasjonsfilene til alle nettsteder ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Etter å ha åpnet fcgi-starter-konfigurasjonsfilen, sett inn følgende ▼
export PHP_FCGI_CHILDREN=20
Endre til ▼
export PHP_FCGI_CHILDREN=0
- Etter modifisering vil PHP-underprosessadministrasjonen bli slått av i mod_fcgid-modus.
- PHP-CGI-prosessen vil ikke lenger skape underordnede prosesser, noe som kan spare mye minne.
VestaCP angir heller ikke en termineringsmekanisme for inaktive prosesser:
- Alle nylig utførte PHP-CGI-prosesser vil fortsette å bruke minne til systemet startes på nytt.
For å fikse dette, legg bare til mod_fcgid-konfigurasjonsfilen /etc/httpd/conf.d/fcgid.conf Legg til følgende innstillinger i ▼
FcgidIdleTimeout 120
- Sett Apache til automatisk å drepe PHP-CGI-prosesser som er inaktive i 2 minutter (120 sekunder).
Etter at oppsettet er fullført, start Apache-tjenesten på nytt ▼
service httpd restart
Etter at tjenesten er startet på nytt, vil de hundrevis av PHP-CGI-prosesser som tidligere ble vist i HTOP ikke lenger vises.
Vanligvis bruker en enkelt PHP-CGI-prosess for en enkelt Vesta CP-bruker 30 til 40 MB minne, noe som er mer enn nok for en Linux- vert.
Derfor er det avgjørende for nettmarkedsførere som ønsker å utmerke seg innen SEO å optimalisere konfigurasjonen av Vesta-innhold og -maler .
Du kan ta en titt på følgende veiledninger på VestaCP-panelet ▼
Forhåpentligvis vil artikkelen «Optimalisering av VestaCP phpfcgid-malkonfigurasjon for 'Multiple Processes, Memory Exhaustion 500 Error'» som er delt på Chen Weiliangs blogg ( https://www.chenweiliang.com/ ) være nyttig for deg.
Del gjerne lenken til denne artikkelen: https://www.chenweiliang.com/cwl-735.html



