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
,
Diese Option dient zur Identifizierung des Generierungsmodus des FPM-Unterprozesses:
statisch: bedeutet „zu“. pm.max_chindren
-Worker direkt auslagern, wenn fpm läuft. Prozess
dynamisch: bedeutet, dass start_servers
-Prozesse während der Laufzeit geforkt und je nach Auslastung dynamisch angepasst werden auf nicht mehr als max_children-Prozesse.
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:
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 max_children
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.
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 max active processes
im Status von fpm ist, und konfigurieren Sie dann max_children so, dass es größer ist.
Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Konfiguration von max_children in PHP-FPM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!