Heim > Artikel > Backend-Entwicklung > Lösen Sie das Problem der Speichererschöpfung, die durch zu viele PHP-FPM-Prozesse verursacht wird, im Beispiel Linux_php
Dieser Artikel stellt hauptsächlich vor, wie man das Problem der Speichererschöpfung löst, die durch zu viele PHP-fpm-Prozesse unter Linux verursacht wird. Freunde, die PHP-fpm verstehen müssen, können sich hierauf beziehen Artikel zum Lernen. Lassen Sie uns darüber sprechen, wie Sie das Problem der Speichererschöpfung lösen können, die durch zu viele PHP-fpm-Prozesse verursacht wird.
Kürzlich habe ich festgestellt, dass der Linux-Server und der Datenbankdienst meines Blogs oft hängen blieben und vor dem normalen Zugriff einen Neustart erforderten. Das war äußerst widerlich, also beschloss ich, mit der Lösung des Problems zu beginnen und meine Zeit zu sparen Energieproblem (ich möchte nicht oft ausgehen) und dann manuell neu starten, was mühsam und zeitaufwändig ist.
Analysieren Sie das Problem
Nachdem Sie das Problem entdeckt haben, verwenden Sie zunächst den Befehl free -m
, um den aktuellen Serverausführungsstatus anzuzeigen:
Sie können sehen, dass mein Serverspeicher 2G groß ist, aber derzeit sind nur noch 70 MB verfügbarer Speicher und die Speicherauslastung liegt bei bis zu 92 % Der Datenbankdienst hängt aufgrund der hohen Speicherauslastung auf.
Sehen Sie sich weiterhin die Details an, verwenden Sie den Befehl top
:
Schauen Sie sich dann die in der Befehlsausgabe aufgeführten Prozessdetails an und konzentrieren Sie sich dabei auf den Punkt 10 Spaltenspeichernutzungsverhältnis:
Es wurde festgestellt, dass die CPU-Auslastung nicht hoch ist und das CPU-Problem ausgeschlossen ist. Darüber hinaus ist ersichtlich, dass die Datenbank Der Dienst belegt 15,2 % des Speichers und die Speicherauslastung. Wenn er zu hoch ist, wird der Datenbankprozess (der Prozess, der den meisten Speicher beansprucht) verdrängt, was dazu führt, dass der Dienst aufhängt. Daher müssen wir die Details überprüfen Speichernutzung. Welche Prozesse verbrauchen so viel Speicher?
Verwenden Sie den Befehl:
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
Sehen Sie sich die 40 Prozesse an, die am meisten Speicher verbrauchen:
Bei Betrachtung des Speichernutzungsverhältnisses in der vierten Spalte haben wir festgestellt, dass zusätzlich zum MySQL-Datenbank-Dienst auch der PHP-FPM-Dienstpool zu viele untergeordnete Elemente geöffnet hat Prozesse, die mehr als die Hälfte des Speichers belegen. Wenn das Problem gefunden ist, beginnen wir mit der Lösung des Problems: Legen Sie die Anzahl der Prozesse fest, um den PHP-FPM-Prozesspool zu steuern.
Problem lösen
Durch verschiedene Suche wurde festgestellt, dass Sie das pm.max_children
Attribut, steuern Sie die Anzahl der PHP-FPM-Unterprozesse. Öffnen Sie zunächst die PHP-FPM--Konfigurationsdatei und führen Sie den Befehl aus:
vi /etc/php-fpm.d/www.conf
und stellen Sie fest, dass sein Wert zu groß ist: pm.max_children
-Wert ist 50 und jeder Prozess belegt 1 % – 2,5 % des Speichers machen mehr als die Hälfte des Speichers aus, daher müssen wir den Wert hier auf 25 reduzieren Überprüfen Sie gleichzeitig die folgenden beiden Attribute: pm.max_children
: Der Wert gibt die garantierte maximale Anzahl von Leerlaufprozessen an. Wenn der Leerlaufprozess größer als dieser Wert ist, wird dieser bereinigt pm.max_spare_servers
: Der Garantierte Mindestanzahl von Leerlaufprozessen unter diesem Wert, wird ein neuer untergeordneter Prozess erstellt pm.min_spare_servers
Wert. Der pm.max_children
-Wert wird auf 60 %–80 % des pm.max_spare_servers
-Werts festgelegt. pm.max_children
systemctl restart php-fpm
ps: Zeigt die Anzahl der von php-fpm geöffneten Prozesse und das Speicherlimit jedes Prozesses an
1 Prozesse, die über den Befehl auf dem Server geöffnet wurden. Wie viele PHP-CGI-Prozesse gibt es? Linux + Nginx + PHP-Umgebung, das Speicherlimit jedes PHP-FPM-Prozesses
Einstellungsmethode:
ps -fe |grep "php-fpm"|grep "pool"|wc -l
Bearbeiten Sie die php-fpm.conf Konfigurationsdatei
php_admin_value[memory_limit] = 128M (die Konfigurationsdatei auf meinem Server befindet sich in /etc/php5/fpm/pool.d/www.conf. Diese Datei ist in php-fpm.conf enthalten) Die folgenden Zahlen können beliebig sein Ändern: 32M, 64M, 128M, 256M, 512M. Diese Einstellung kann entsprechend Ihrer Serverspeichergröße und Ihren Anforderungen geschrieben werden. Nach der Änderung müssen Sie den PHP-FPM-Dienst laden.
Zusammenfassung
Das Obige stellt Ihnen der Herausgeber vor, um das Problem der Speichererschöpfung zu lösen, die durch zu viele PHP-FPM-Prozesse verursacht wird Linux. Ich hoffe, es hilft allen.
Verwandte Empfehlungen:
So aktivieren Sie Statusstatistiken mit PHP-FPM
Teilen von Beispielcode, erklärt von php-fpm
Einführung von Lösungen zur Reduzierung der PHP-FPM-Speichernutzung
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem der Speichererschöpfung, die durch zu viele PHP-FPM-Prozesse verursacht wird, im Beispiel Linux_php. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!