Optimalisatie van VestaCP phpfcgid-sjabloonconfiguratieproces multi-geheugenuitputting 500 fouten

Na het selecteren van de "phpfcgid"-sjabloon voor de VestaCP -webservice, zorgde een groot aantal PHP-CGI-processen ervoor dat het geheugen snel vol raakte.

  • Ik had eigenlijk een paar uur geen geheugen meer nadat ik de server opnieuw had opgestart.
  • Het voorheen inactieve PHP-CGI-proces wordt niet afgebroken en één proces voert bijna 1 subprocessen uit, die ten minste 20 miljoen geheugen verbruiken.

Gebruikt in SSH htop commando (installatie vereist), kunt u deze status bekijken ▼

Na het selecteren van de "phpfcgid"-sjabloon voor de VestaCP-webservice raakte het geheugen snel vol door het grote aantal PHP-CGI-processen.

Als u een foutmelding "-bash: htop: command not found" krijgt wanneer u de htop-opdracht gebruikt, raadpleeg dan deze tutorial voor de oplossing ▼

Het grote aantal PHP-CGI-processen zorgde ervoor dat het geheugen snel vol raakte. Het probleem zit hem in het feit dat VestaCP een niet-geoptimaliseerde configuratie gebruikt in de CentOS phpfcgid-template.

  • Stel in VestaCP in de phpfcgid-sjabloon 1 PHP-CGI-proces in om maximaal 20 onderliggende processen uit te voeren.

Zien /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Regel 13 van het bestand:

export PHP_FCGI_CHILDREN=20

Een dergelijke setup schendt echter de waarschuwing van Apache in de documentatie over het subprocesbeheer van PHP:

Het beheer van PHP-childprocessen ( PHP_FCGI_CHILDREN ) moet altijd worden uitgeschakeld met mod_fcgid. Hierdoor wordt slechts één verzoek tegelijk doorgestuurd naar de applicatieprocessen die het heeft gestart; de door PHP aangemaakte childprocessen worden dus niet effectief gebruikt. (Bovendien worden de PHP-childprocessen mogelijk niet correct beëindigd.) Standaard, en met de omgevingsvariabele PHP_FCGI_CHILDREN=0 , is het beheer van PHP-childprocessen uitgeschakeld.

Omdat in de mod_fcgid-module van Apache het PHP-CGI-proces slechts op één verzoek kan reageren en tegelijk kan worden uitgevoerd, is het onderliggende PHP-CGI-proces erg inefficiënt.

Daarom moeten de instellingen voor PHP-subprocesbeheer direct worden uitgeschakeld ▼

PHP_FCGI_CHILDREN=0

Tegelijkertijd, als je al een gegenereerde virtuele host hebt, moet je de configuratiebestanden van alle websites wijzigen ▼

/home/用户名/web/域名/cgi-bin/fcgi-starter

Na het openen van het fcgi-starter configuratiebestand, voeg je het volgende in:

export PHP_FCGI_CHILDREN=20

Wijzigen in

export PHP_FCGI_CHILDREN=0
  • Na wijziging wordt PHP-subprocesbeheer uitgeschakeld in mod_fcgid-modus.
  • Het PHP-CGI-proces zal geen onderliggende processen meer voortbrengen, wat veel geheugen kan besparen.

VestaCP stelt ook geen beëindigingsmechanisme in voor inactieve processen:

  • Alle nieuw uitgevoerde PHP-CGI-processen blijven geheugen gebruiken totdat het systeem opnieuw wordt opgestart.

Om dit op te lossen, voegt u het configuratiebestand mod_fcgid toe /etc/httpd/conf.d/fcgid.conf Voeg de volgende instellingen toe in ▼

FcgidIdleTimeout 120
  • Stel Apache in om PHP-CGI-processen die 2 minuten (120 seconden) inactief zijn, automatisch te beëindigen.

Nadat de installatie is voltooid, start u de Apache-service opnieuw ▼

service httpd restart

Nadat de service opnieuw is opgestart, worden de honderden PHP-CGI-processen die eerder in HTTPP werden weergegeven, niet meer weergegeven.

Een enkel PHP-CGI-proces voor een enkele Vesta CP-gebruiker verbruikt doorgaans 30 tot 40 MB geheugen, wat meer dan voldoende is voor een Linux- host.

Het optimaliseren van de configuratie van Vesta-content en -sjablonen is daarom cruciaal voor online marketeers die willen uitblinken in SEO .

U kunt de volgende tutorials bekijken op het VestaCP-paneel ▼

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Scroll naar boven