2017-09-18 1 views
0

Ich habe ein PHP-Skript, das von einem externen Prozess aufgerufen wird, wenn bestimmte Ereignisse passieren, wie wenn eine E-Mail ankommt. Wenn also das auslösende Ereignis in einem bestimmten Zeitraum mehrmals auftritt, wird das Skript ebenfalls mehrmals aufgerufen.Maximale Anzahl von PHP CLI-Prozessen

Wie hoch ist die maximale Anzahl von Instanzen des Skripts, das gleichzeitig ausgeführt wird? Wie würde ich das Limit lockern?

Ich habe gelesen, über verschiedene Stücke von Informationen über die maximale Anzahl von gleichzeitigen Verbindungen im Rahmen von Apache/PHP, aber ich denke, der CLI-Kontext funktioniert anders.

Meine Umgebung ist Ubuntu 16.04LTS/PHP 7.0.

Danke!

+0

Es hängt alles davon ab, wie viel RAM und CPU Sie haben – mwweb

Antwort

0

Unter Linux wird die maximale Anzahl von Prozessen durch mehrere Faktoren bestimmt:

cat /proc/sys/kernel/pid_max 

Dies wird den maximalen PID-Wert + 1 (das heißt der höchste Wert PID ist ein kleiner als dieser Wert) zeigen. Wenn Sie diesen Wert treffen, wird der Kernel umgebrochen. Beachten Sie, dass die ersten 300 reserviert sind. Der Standardwert ist 32768, so dass die maximale Anzahl der PIDs 32767 - 300 = 32467.

Dies wird Ihnen die maximale Anzahl von Prozessen zeigen, dass Ihr Benutzerkonto ausgeführt werden können:

ulimit -u 

Also, wenn Sie‘ Wenn Sie alle Ihre Prozesse als einzelner Benutzer ausführen und diese Zahl kleiner ist als der pid_max-Wert, ist dies möglicherweise Ihre Obergrenze.

Diese Werte können angepasst werden (insbesondere bei 64-Bit-Systemen), aber sie sind wahrscheinlich nicht Ihre tatsächliche Obergrenze. In den meisten Fällen basiert die maximale Anzahl von Prozessen auf Ihren Hardwareressourcen. Und ich vermute, dass wenn Sie versuchen, irgendwo in der Nähe von 32.000 PHP-CLI-Instanzen zu laufen, Ihnen RAM viel früher ausgehen wird, als Ihnen der verfügbare Prozessraum ausgehen wird.

Die maximale Anzahl der Prozesse hängt davon ab, was Ihr Skript tut; insbesondere, wie viel CPU und RAM es verwendet. Am besten starten Sie ein Skript, in dem die X-Nummer Ihrer CLI-Prozesse über einen längeren Zeitraum ausgeführt wird, und beobachten dann die Auslastung Ihres Systems. Beginne mit 10 .. Wenn die Last vernachlässigbar ist, stoße sie auf 100. Dann fahre fort, bis du eine merkliche Last hast. Finden Sie heraus, wie hoch die maximale Auslastung ist, und führen Sie dann die Übereinstimmung aus, um herauszufinden, wie viele Prozesse Sie maximal ausführen können.

+0

Falls er pid Werte erhöhen möchte sysctl -w kernel.pid_max = xxxxxxx – mwweb

Verwandte Themen