PHP-FPM ist das Rückgrat moderner PHP-Webanwendungen und entscheidet maßgeblich über Performance und Stabilität. Ein unzureichend konfiguriertes PHP-FPM kann zu überlasteten Servern, langen Wartezeiten oder sogar zu Fehlern wie 502 Bad Gateway führen. In diesem Artikel lernen Sie praxisnah, wie Sie die PM-Settings, max_children und das Queueing für Ihren Web-Stack richtig planen und optimieren.
PHP-FPM Process Manager (pm) verstehen
PHP-FPM verwendet verschiedene Process Manager (pm) Typen, die das Verhalten der PHP-Worker steuern. Die Wahl des richtigen Typs ist entscheidend für Stabilität und Performance.
pm-typen im Überblick
- static: Eine feste Anzahl von PHP-Worker-Prozessen wird gestartet. Ideal für kleine, stabile Umgebungen.
- dynamic: Anzahl der Prozesse kann zwischen pm.min_spare_servers und pm.max_children variieren. Flexibel für wechselnde Lasten.
- ondemand: Prozesse werden nur bei Bedarf gestartet und nach inactivity_timeout beendet. Spart Ressourcen, kann jedoch Latenzen erzeugen.
max_children und ihre Auswirkungen
Der Parameter pm.max_children definiert die maximale Anzahl gleichzeitig laufender PHP-Worker. Ist der Wert zu niedrig, entstehen Wartezeiten; ist er zu hoch, kann der Server speicherüberlastet werden.
Berechnung der optimalen max_children
Eine Faustformel zur Abschätzung:
max_children = (Gesamtspeicher verfügbar für PHP) / (Speicher pro PHP-Worker)
Beispiel: Server mit 8 GB RAM, 512 MB pro PHP-Worker:
max_children = 8 GB / 512 MB ≈ 16
pm.start_servers, pm.min_spare_servers, pm.max_spare_servers
Diese Parameter steuern die Anfangs- und Minimal-/Maximalwerte bei dynamischem PM:
pm.start_servers: Anzahl der Worker beim Start.pm.min_spare_servers: Minimale freie Worker, um schnelle Verarbeitung zu gewährleisten.pm.max_spare_servers: Maximale freie Worker, um Ressourcenverbrauch zu begrenzen.
Queueing verstehen
Wenn alle PHP-Worker belegt sind, werden neue Anfragen in einer Warteschlange gehalten. Diese Queueing-Zeiten beeinflussen direkt die Time-to-First-Byte (TTFB) und die Nutzererfahrung.
Faktoren, die Queueing beeinflussen
- Anzahl verfügbarer Worker (
max_children). - Lang laufende PHP-Skripte.
- Lastspitzen, z. B. durch Crawling oder Kampagnen.
- Netzwerk- und Datenbank-Latenzen.
Monitoring und Optimierung
Kontinuierliches Monitoring ist entscheidend, um die PHP-FPM-Einstellungen anzupassen:
Metrics, die überwacht werden sollten
- Aktive PHP-Worker vs. max_children
- Anzahl wartender Requests
- Speicherverbrauch pro Worker
- Request-Dauer (slow logs)
Tools zur Überwachung
systemctl status php-fpmphp-fpm_exporter + Prometheus + Grafana- Slow-Log Analyse in
/var/log/php-fpm/
Best Practices für Produktionsumgebungen
- Bei dynamischem PM immer ausreichend min_spare_servers setzen, um Lastspitzen abzufangen.
- Lang laufende Skripte in Queueing analysieren und ggf. optimieren.
- Memory-Limits pro Worker testen, um max_children korrekt zu dimensionieren.
- Ondemand PM nur für Low-Traffic Umgebungen, da Startzeit Latenzen erzeugt.
- Regelmäßige Tests unter Last (ab 70–80 % Auslastung), um Engpässe frühzeitig zu erkennen.
Fehlerbehandlung bei Überlast
Typische Symptome bei falscher PHP-FPM-Konfiguration:
- 502 Bad Gateway bei Nginx/Apache
- Hohe TTFB und Timeouts
- PHP-Worker-Speicherüberlauf
Gängige Maßnahmen
- max_children erhöhen, wenn Speicher verfügbar
- Lang laufende Skripte optimieren oder auslagern
- Queueing-Monitoring einrichten und Alerts konfigurieren
- Reverse Proxy Cache nutzen, um die Anzahl PHP-Aufrufe zu reduzieren
Zusammenfassung
Ein korrekt geplantes PHP-FPM Capacity Management umfasst:
- Die Wahl des richtigen Process Managers (static/dynamic/ondemand)
- Dimensionierung von max_children anhand von Speicher und Last
- Optimierung von Queueing durch min/max spare servers
- Monitoring von aktiven Workers, Queueing und Speicherverbrauch
- Lasttests und kontinuierliche Anpassung der Settings
Durch diese Maßnahmen bleibt Ihr Web-Stack stabil, skalierbar und performant, auch bei steigender Nutzerlast.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











