Wenn Sie einen LEMP bereitgestellt haben (Linux , NGINX , MySQL/MariaDB und PHP ) Stack, dann verwenden Sie wahrscheinlich FastCGI Proxy innerhalb von NGINX (als HTTP-Server), für die PHP-Verarbeitung. PHP-FPM (ein Akronym für FastCGI Process Manager ) ist eine weit verbreitete und leistungsstarke Alternative zu PHP FastCGI Umsetzung.
Hier sind die nützlichen Anleitungen zum Einrichten von LEMP Stack unter Linux.
- So installieren Sie den LEMP-Stack mit PhpMyAdmin in Ubuntu 20.04
- So installieren Sie den LEMP-Server auf CentOS 8
- Wie man LEMP auf Debian 10 Server installiert
Kürzlich wurden alle unsere PHP Websites auf einem unserer LEMP Webserver wurden langsam und reagierten schließlich nicht mehr auf die Anmeldung beim Server. Wir haben festgestellt, dass dem System der RAM ausgeht:PHP-FPM den größten Teil des Arbeitsspeichers verbraucht, wie im folgenden Screenshot (Blicke – Systemüberwachungstool) angegeben.
$ glances
In diesem Artikel zeigen wir, wie Sie PHP-FPM verhindern können nicht zu viel oder den gesamten Systemspeicher (RAM ) unter Linux. Am Ende dieser Anleitung erfahren Sie, wie Sie PHP-FPM reduzieren können Speicherverbrauch um 50 % oder mehr.
Verringern Sie die PHP-FPM-Speichernutzung
Nach einigen Recherchen im Internet stellten wir fest, dass wir das PHP-FPM neu konfigurieren mussten Process Manager und bestimmte Aspekte davon, um den Speicherverbrauch von PHP-FPM in der Pool-Konfigurationsdatei zu reduzieren.
Der Standardpool ist www und seine Konfigurationsdatei befindet sich unter /etc/php-fpm.d/www.conf (unter CentOS/RHEL/Fedora ) oder /etc/php/7.4/fpm/pool.d/www.conf (unter Ubuntu/Debian/Mint ).
$ sudo vim /etc/php-fpm.d/www.conf [On CentOS/RHEL/Fedora] $ sudo vim /etc/php/7.4/fpm/pool.d/www.conf [On Ubuntu/Debian/Mint]
Suchen Sie die folgenden Anweisungen und legen Sie ihren Wert entsprechend Ihrem Anwendungsfall fest. Auskommentierte Anweisungen müssen auskommentiert werden.
pm = ondemand pm.max_children = 80 pm.process_idle_timeout = 10s pm.max_requests = 200
Lassen Sie uns die obigen Anweisungen und ihre Werte kurz erläutern. Die Uhr Die Direktive legt fest, wie der Prozessmanager die Anzahl der untergeordneten Prozesse steuert. Die Standardmethode ist dynamisch , was bedeutet, dass die Anzahl der untergeordneten Prozesse (untergeordnete Prozesse) dynamisch abhängig von einigen anderen Anweisungen einschließlich pm.max_children festgelegt wird die die maximale Anzahl von Kindern definiert, die gleichzeitig leben können.
Der idealste Prozessmanager ist der ondemand Schema, bei dem beim Start keine untergeordneten Prozesse erstellt, sondern bei Bedarf erzeugt werden. Untergeordnete Prozesse werden nur verzweigt, wenn neue Anforderungen basierend auf pm.max_children verbunden werden und pm.process_idle_timeout die die Anzahl der Sekunden definiert, nach denen ein inaktiver Prozess beendet wird.
Zu guter Letzt müssen wir die pm.max_requests setzen Parameter, der die Anzahl der Anforderungen definiert, die jeder untergeordnete Prozess ausführen soll, bevor er neu gestartet wird. Beachten Sie, dass dieser Parameter auch als Problemumgehung für Speicherlecks in Bibliotheken von Drittanbietern verwendet werden kann.
Referenz :Ein besserer Weg, PHP-FPM auszuführen.
Nachdem ich diese obigen Konfigurationen vorgenommen hatte, bemerkte ich RAM Die Nutzung auf unserem Server ist jetzt in Ordnung. Haben Sie irgendwelche Gedanken zu diesem Thema oder Fragen? Kontaktieren Sie uns über das Feedback-Formular unten.