Heim  >  Artikel  >  Backend-Entwicklung  >  Verstehen Sie die Konfiguration von max_children in PHP-FPM

Verstehen Sie die Konfiguration von max_children in PHP-FPM

coldplay.xixi
coldplay.xixinach vorne
2020-07-30 17:32:112506Durchsuche

Verstehen Sie die Konfiguration von max_children in PHP-FPM

Jetzt ist Nginx + FPM im Grunde die Mainstream-Konfiguration geworden, wobei uns die Konfiguration von pm.max_chindren mehr am Herzen liegt.

Zunächst achten wir darauf eine Einstellung: pm = static/dynamic。

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Kompetenz

Diese Option dient zur Identifizierung der Generation Modus des FPM-Unterprozesses:

statisch: bedeutet, dass pm.max_chindren Worker-Prozesse direkt ausgegeben werden, wenn FPM ausgeführt wird

dynamisch: bedeutet, dass start_servers

Es wird generell empfohlen, statisch zu verwenden. Der Vorteil besteht darin, dass die Lastsituation nicht dynamisch bestimmt werden muss und die Leistung verbessert wird. Der Nachteil besteht darin, dass es mehr Systemspeicherressourcen beansprucht.

Das Obige zeigt uns die Anzahl der Worker-Prozesse, die von max_chindren dargestellt werden. Es wird allgemein angenommen, dass dies ein relativ großes Missverständnis ist, je mehr Parallelität diese Konfiguration gleichzeitig bewältigen kann:

    1) Tatsächlich gibt es mehr Prozesse, was die Kosten für den Prozesswechsel erhöht , was mehr Kern bedeutet. Ja, die Anzahl der FPM-Prozesse, die gleichzeitig ausgeführt werden können, wird die Anzahl der CPUs nicht überschreiten. Es ist ein falsches Verständnis, QPS durch das Öffnen von mehr Workern zu erhöhen. Das bedeutet nicht, dass Sie mehr CPUs für die Verarbeitung haben, wenn Sie mehr Prozesse öffnen.
  • 2) Wenn der Server ausgelastet ist, führt dies dazu, dass Nginx die Daten an fpm weiterleitet. Es wird festgestellt, dass alle Arbeiter arbeiten und es keine freien Arbeiter gibt, die Anfragen annehmen können. Daraus ergibt sich 502.
  • 3) Da wir im tatsächlichen Geschäft viele E/A-Vorgänge durchführen, wie z. B. das Lesen von Datenbanken oder interne RPC-Aufrufe, wird der Prozess beim Warten auf E/A vom System in den Ruhezustand versetzt belegt die CPU nicht. Wenn weniger Worker konfiguriert sind, wird die CPU nicht ausgelastet

Wie sollte also die Anzahl der Worker konfiguriert werden?

Theoretisch ist die Anzahl der Worker-Prozesse = die Anzahl der CPUs am sinnvollsten, aber aufgrund von Punkt 2 hat möglicherweise nicht jeder Worker die Verarbeitung der Anfrage abgeschlossen, sodass 502 häufig auftritt. Das Öffnen weiterer Prozesse bedeutet jedoch lediglich, 502 zu vermeiden und die Anforderung vorübergehend aufzuhängen. Dies ist jedoch nur eine Möglichkeit, dies zu verringern. Tatsächlich erhöht dies nicht nur die Parallelität des Systems, sondern erhöht auch die Systemlast. Basierend auf 2 und 3 ist es wichtiger, eine angemessene Anzahl von Arbeitern festzulegen.

Die einzige Kampfkunst der Welt besteht darin, schnell zu sein. Sie können die Effizienz des Programms so weit wie möglich verbessern und die Zeit einer einzelnen Anfrage auf ein Minimum reduzieren einer einzelnen Arbeitskraft verkürzt, die in einer Zeiteinheit bearbeitet werden kann. Natürlich gab es mehr Anfragen.

Dann kann die Anzahl der

basierend auf der Anzahl der von jedem Mitarbeiter pro Zeiteinheit bearbeiteten Anfragen geschätzt werden. Wenn die Verarbeitungszeit der größten Anfrage (CPU-Zeit in xhprof) innerhalb von 100 ms liegt und innerhalb von 100 ms 100 Anfragen gleichzeitig eingehen, müssen theoretisch 100 Arbeitsprozesse so konfiguriert werden, dass die Anfragen zuerst hängen bleiben. max_children

Die maximale Anforderungszeit kann jedoch von vielen äußeren Umständen beeinflusst werden und ist schwer vorherzusagen, insbesondere Netzwerk-E/A. Wir können auch Profiltools von Drittanbietern ausleihen, z. B. xhprof Das Tool kann den CPU-Zeitverbrauch berechnen, was viel sinnvoller ist als die Berechnung der Gesamtzeit. Tatsächlich gibt es hier eine Abkürzung, um Ihre max_children-Zahl zu konfigurieren, nämlich die Festlegung von max_childnren in der frühen Phase. Nachdem Sie eine Zeit lang stabil gelaufen sind, beobachten Sie, was

im Status von fpm ist, und konfigurieren Sie dann max_children so, dass es größer ist. max active processes

Das obige ist der detaillierte Inhalt vonVerstehen Sie die Konfiguration von max_children in PHP-FPM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen