Ich verwende PHP-FPM auf meinen Debian-Servern. Meine Frage betrifft die Speichernutzung. Ich kann das Speicherlimit nur in PHP festlegen und das sollte für einige Anfragen nicht zu niedrig sein. Ich kann auch nur die Anzahl der Prozesse in PHP-FPM festlegen und das sollte auch nicht zu niedrig sein, da ich viele PHP-Anfragen ausführe.
In den meisten Fällen verwenden Prozesse nur etwa 2–20 MB. Das Prozesslimit liegt bei 512, also sind das etwa 5–10 GB RAM. Da einige PHP-Skripte jedoch viel mehr Speicher verwenden können, liegt der maximal zulässige Speicher bei etwa 1 TB (512 Prozesse * 2048 MB). Und wenn etwas schief geht, beendet der Debian OOM Killer einfach zufällig Prozesse.
Gibt es eine Möglichkeit, die gesamte Speichernutzung für php-fpm zu begrenzen? Etwa eine feste Grenze, bei der php-fpm keine weiteren Prozesse startet, weil der gesamte Arbeitsspeicher erschöpft ist.
Antwort1
Vor ein paar Tagen hatte ich ein ähnliches Problem, als einige php5-fpm-Master zu viele Prozesse erzeugten. OOM Killer hat sehr geholfen, indem es nginx beendet hat.
Als Lösung fand ichKontrollgruppeMechanismus mitSpeichersubsystem. Es ermöglicht, alle FPM-Prozesse in einer Gruppe zusammenzufassen, die beispielsweise auf 60 % des System-RAM beschränkt ist.
Tolle Dokumentation: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Using_Control_Groups.html