it-swarm.com.de

php5-fpm: Server erreicht pm.max_children

Ich habe Nginx + php5-fpm. Mehrmals pro Stunde bleibt meine Website hängen und in der Protokolldatei sehe ich Folgendes:

WARNUNG: Der Server [pool www] hat die Einstellung pm.max_children (5) erreicht.

/ etc/php5/fpm/pool.d/www.conf Datei enthält die folgende Konfiguration:

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Server : AMD Opteron ™ 3280, Octo-Core, 8 x 2,4 GHz, 16 GB DIMM (DDR3).

Ich habe keine Ahnung, welche Nummern ich in die Datei www.conf für diesen Server einfügen soll. Kann ich jemandem helfen? Vielen Dank

44
user1821484

Es gibt viele mögliche Gründe, warum Ihr PHP-FPM den max_children Erreicht. Die häufigsten sind:

  • Viele parallele Anfragen von Ihren Kunden
  • Langsame Ausführung der PHP Skripte
  • Sehr niedrige Einstellung von max_children

Wenn Sie sich die technischen Daten Ihres Computers ansehen und davon ausgehen, dass nichts anderes als PHP + Nginx ausgeführt wird, können Sie es wahrscheinlich viel höher als 5 einstellen. Sie sagen, Sie haben 8 Kerne, normalerweise benötigt Nginx viel weniger CPU als PHP, also mit 5 Kindern Sie werden wahrscheinlich nie alle verwenden können. Normalerweise setze ich es auf etwas wie Anzahl der Kerne x 2 oder Anzahl der Kerne x 4, abhängig vom Speicherverbrauch Ihres PHP Skripte.

41
replay

Ich habe festgestellt, dass das Festlegen des Werts pm.max_requests (der standardmäßig auskommentiert ist) zur Behebung dieser Fehler beigetragen hat. Diese Einstellung erzwingt, dass untergeordnete Anforderungen nach dem Ausführen einer bestimmten Anzahl von Anforderungen erneut angezeigt werden. Sie kann hilfreich sein, wenn irgendwo in Ihrem Code oder in Bibliotheken von Drittanbietern Speicherlecks auftreten.

In / etc/php-fpm.d/www.conf:

pm.max_requests = 500
21
Tom Jowitt

Dieser Link kann nützlich sein - er erklärt, wie die Anzahl der untergeordneten Prozesse basierend auf der Speichermenge auf dem System berechnet wird:

14
HTF