GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verhindern Sie, dass PHP-FPM unter Linux zu viel RAM verbraucht

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.


Ubuntu
  1. So löschen Sie den Arbeitsspeicher des Computers in Ubuntu und Linux Mint

  2. Linux – Wie führe ich einen Bootloader von Linux aus?

  3. Wie kann man verhindern, dass Windows 10 den Ext4-Superblock jedes Mal beschädigt?

  4. Wie kann verhindert werden, dass das System beim Thrashing (out of Ram) nicht mehr reagiert?

  5. Wie kann man programmgesteuert verhindern, dass ein Linux-Computer in den Ruhezustand wechselt oder den Bildschirmschoner einschaltet?

So zeigen Sie Daten aus einer Textdatei in Linux an

Wie viel RAM ist auf Ihrem Ubuntu-System installiert?

So deinstallieren Sie Anwendungen von Ubuntu Linux

So deinstallieren Sie Programme von Ubuntu Linux

Ubuntu – Wie verhindert man, dass Firefox unter Ubuntu 16.04 auf Version 57 aktualisiert?

Wie überprüfe ich Ram-Fehler über Linux?