Po wybraniu szablonu „phpfcgid” dla usługi sieciowej VestaCP duża liczba procesów PHP-CGI szybko wyczerpała pamięć.
- W zasadzie brakowało mi pamięci przez kilka godzin po ponownym uruchomieniu serwera.
- Poprzednio bezczynny proces PHP-CGI nie zostaje zabity, a jeden proces uruchamia prawie 1 podprocesów, zużywając co najmniej 20M pamięci.
Używane w SSH htop (wymagana instalacja), możesz zobaczyć ten status ▼

Jeśli pojawi się komunikat o błędzie „-bash: htop: nie znaleziono polecenia” podczas korzystania z polecenia htop, zapoznaj się z tym samouczkiem, aby uzyskać rozwiązanie ▼
Duża liczba procesów PHP-CGI powodowała szybkie wyczerpywanie się pamięci. Problem tkwi w tym, że VestaCP korzysta z niezoptymalizowanej konfiguracji w szablonie phpfcgid CentOS .
- VestaCP w szablonie phpfcgid, ustaw 1 proces PHP-CGI, aby uruchomić do 20 procesów potomnych.
Widzieć /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Wiersz 13 akt:
export PHP_FCGI_CHILDREN=20
Jednak taka konfiguracja narusza ostrzeżenie Apache w dokumentacji zarządzania podprocesami PHP:
Zarządzanie procesami potomnymi PHP ( PHP_FCGI_CHILDREN ) powinno być zawsze wyłączone za pomocą modułu mod_fcgid, który będzie kierował tylko jedno żądanie na raz do procesów aplikacji, które utworzył. W związku z tym procesy potomne utworzone przez PHP nie będą efektywnie wykorzystywane. (Dodatkowo, procesy potomne PHP mogą nie zostać poprawnie zakończone). Domyślnie, przy ustawieniu zmiennej środowiskowej PHP_FCGI_CHILDREN=0 , zarządzanie procesami potomnymi PHP jest wyłączone.
Ponieważ w module Apache mod_fcgid proces PHP-CGI może odpowiadać tylko na jedno żądanie i działać jednocześnie, proces potomny PHP-CGI jest bardzo nieefektywny.
Dlatego ustawienia zarządzania podprocesami PHP powinny być bezpośrednio wyłączone ▼
PHP_FCGI_CHILDREN=0
Jednocześnie, jeśli masz już wygenerowany wirtualny host, musisz zmodyfikować pliki konfiguracyjne wszystkich witryn ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Po otwarciu pliku konfiguracyjnego fcgi-starter wstaw następujące ▼
export PHP_FCGI_CHILDREN=20
Zmień na ▼
export PHP_FCGI_CHILDREN=0
- Po modyfikacji zarządzanie podprocesami PHP zostanie wyłączone w trybie mod_fcgid.
- Proces PHP-CGI nie będzie już tworzył procesów potomnych, co może zaoszczędzić dużo pamięci.
Ponadto VestaCP nie ustawia mechanizmu zakończenia dla bezczynnych procesów:
- Wszystkie nowo uruchomione procesy PHP-CGI będą nadal używać pamięci do momentu ponownego uruchomienia systemu.
Aby to naprawić, po prostu dodaj plik konfiguracyjny mod_fcgid /etc/httpd/conf.d/fcgid.conf Dodaj następujące ustawienia w ▼
FcgidIdleTimeout 120
- Ustaw Apache, aby automatycznie zabijał procesy PHP-CGI, które są bezczynne przez 2 minuty (120 sekund).
Po zakończeniu konfiguracji uruchom ponownie usługę Apache ▼
service httpd restart
Po ponownym uruchomieniu usługi setki procesów PHP-CGI, które były wcześniej wyświetlane w HTTP, nie będą już wyświetlane.
Zazwyczaj pojedynczy proces PHP-CGI dla pojedynczego użytkownika Vesta CP zużywa od 30 do 40 MB pamięci, co w zupełności wystarcza dla hosta Linux.
Dlatego optymalizacja konfiguracji treści i szablonów Vesta jest kluczowa dla internetowych marketerów , którzy chcą osiągnąć sukces w SEO .
Możesz zapoznać się z poniższymi samouczkami na panelu VestaCP ▼
Mamy nadzieję, że artykuł „Optymalizacja konfiguracji szablonu phpfcgid VestaCP w przypadku błędu wyczerpania pamięci 500 spowodowanego występowaniem wielu procesów” udostępniony na blogu Chen Weilianga ( https://www.chenweiliang.com/ ) będzie dla Ciebie pomocny.
Możesz udostępnić link do tego artykułu: https://www.chenweiliang.com/cwl-735.html



