PHP-Prozessmanagermodus
PHP-FPM oder FastCGI Process Manager für PHP bietet mehrere Verwaltungsmodi für seine Arbeitsprozesse. Diese Modi bestimmen, wie PHP-FPM die untergeordneten Prozesse erstellt, verwaltet und recycelt, die PHP-Anfragen verarbeiten. Der Modus wird mit der pm Konfigurationsanweisung festgelegt.

dynamic (Standard)
Im dynamic Modus passt PHP-FPM die Anzahl der erzeugten untergeordneten Prozesse basierend auf der Nachfrage dynamisch an und wird durch die folgenden Anweisungen gesteuert:

pm.max_children die maximale Anzahl von Kindern, die gleichzeitig leben können
pm.start_servers die Anzahl der beim Start erstellten untergeordneten Elemente
pm.min_spare_servers die Mindestanzahl von Kindern im Ruhezustand (die auf die Verarbeitung warten). Wenn die Anzahl der „inaktiven“ Prozesse geringer ist als diese Zahl, werden einige untergeordnete Prozesse erstellt
pm.max_spare_servers die maximale Anzahl von Kindern im Ruhezustand (die auf die Verarbeitung warten). Wenn die Anzahl der „untätigen“ Prozesse größer ist als diese Zahl, werden einige untergeordnete Prozesse getötet
pm.max_spawn_rate die maximale Anzahl der gleichzeitigen Erzeugung untergeordneter Prozesse

Zu den Vorteilen gehört die automatische Anpassung der Anzahl der untergeordneten Prozesse je nach Bedarf, wodurch eine optimale Ressourcennutzung gewährleistet wird. Dies ist besonders nützlich für Server mit schwankender Auslastung.

static
Im static Modus verwaltet PHP-FPM eine feste Anzahl untergeordneter Prozesse. Diese Zahl wird durch die Direktive pm.max_children angegeben. Zu den Vorteilen gehört die konsistente Speichernutzung aufgrund einer konstanten Anzahl untergeordneter Prozesse. Dies ist ideal für Server mit stabiler Auslastung.

ondemand
Im ondemand Modus werden beim Start keine Kinder erstellt. Stattdessen erzeugt PHP-FPM untergeordnete Prozesse nur dann, wenn sie benötigt werden, also wenn eine Anfrage eingeht, die verarbeitet werden muss. Die maximale Anzahl von Kindern, die gleichzeitig am Leben sein können, wird durch die Direktive pm.max_children gesteuert. Prozesse werden dann beendet, nachdem sie durch die Direktive pm.process_idle_timeout für eine bestimmte Zeitspanne im Leerlauf waren. Zu den Vorteilen gehört eine geringere Speichernutzung in Zeiten mit geringem oder keinem Datenverkehr. Ideal für Server mit intermittierender Auslastung oder Anwendungen mit unvorhersehbaren Verkehrsmustern.

Der beste Modus für Ihre Anwendung kann je nach den verfügbaren Ressourcen des Servers, den Verkehrsmustern und den spezifischen Anwendungsmerkmalen variieren. Um eine optimale Leistung zu erzielen, ist es wichtig, die Einstellungen zu überwachen und zu optimieren.