Unabhängiger Vergleich · keine bezahlten Platzierungen
Startseite / Blog / Ratgeber / PHP-FPM: Worker anpassen, ohne den Server in eine Wette zu verwandeln

PHP-FPM: Worker anpassen, ohne den Server in eine Wette zu verwandeln

Es warten zu wenige PHP-FPM-Worker und -Anfragen; zu viel und der RAM bricht zusammen. Hier erfahren Sie, wie Sie pm.max_children anhand des tatsächlichen Speichers berechnen, nicht anhand einer magischen Regel.

Redaktion Hébergeurs.eu 4 Min. Aktualisiert 17 Apr. 2026

Jeden Montagmorgen stürzt eine E-Commerce-Website ab. Das Team erstellt den VPS-Plan. Am folgenden Montag dasselbe Symptom: weiße Seiten, Nginx gibt 502 Bad Gateway zurück. Das eigentliche Problem war nicht die CPU – es war PHP-FPM, das gleichzeitig seine Arbeitskräfte und seinen Arbeitsspeicher erschöpft hatte. Festlegen des FPM-Gleichgewichts zwischen Antwortkapazität und Speicherobergrenze. Schlecht kalibriert wird der Server zum Glücksspiel: Entweder warten die Besucher, oder der Kernel beendet Prozesse.

PHP-FPM verwaltet einen Pool von PHP-Prozessen. Jede dynamische Anfrage verbraucht einen Worker. Wenn alle 20 Worker beschäftigt sind, wartet die 21. Anfrage in einer Warteschlange – die TTFB explodiert. Wenn Sie 200 auf 4 GB RAM ausführen, greift der OOM-Killer.

Lesen Sie den aktuellen Status, bevor Sie etwas berühren

Zunächst einmal pm.max_children = 50 aus einem Forum kopiert:

„Bash

FPM- und RAM-Prozesse (Beispielpool www)

ps --no-headers -o rss,cmd -C php-fpm8.2 | awk '{sum+=$1} END {print sum/1024 "Total MB"}'


Suchen Sie auch:



- **`listen.queue`** im `php-fpm-Status` – ausstehende Anfragen.

– **502/504** korrelierte mit Spitzen in Nginx-Protokollen.

- **`slowlog`** – Skripte, die Worker für lange Zeit festhalten.



| Signal | Interpretation |

| --- | --- |

| Schwanz > 0 regulär | Nicht genügend Worker oder Skripte zu langsam |

| Verwendeter RAM-Swap | Zu viele Worker oder PHP-Speicherverlust |

| Arbeiter im Leerlauf = max. dauerhaft | Untergroßer Pool |

| Arbeiter im Leerlauf = 0, RAM OK | Langsame Skripte, nicht zu kleiner Pool |



## Berechnen Sie pm.max_children ohne Zauberformel



Die Grundformel:



**max_children ≈ (dem PHP-Pool zugewiesener RAM) / (durchschnittlicher RAM pro Worker unter Last)**



Messen Sie den Arbeitsspeicher pro Mitarbeiter mit realistischem Datenverkehr (keine leere Homepage). Schweres WordPress benötigt oft zwischen 60 und 120 MB pro Prozess. Laravel oder Magento gehen höher.



Auf einem 8-GB-VPS, bei dem PHP 4 GB nutzen kann:



- Durchschnittlicher Arbeiter: 100 MB → theoretisch maximal 40.

- Behalten Sie **20–30 % Marge** für Betriebssystem, MySQL, Redis bei → streben Sie 28–32 an, nicht 40.



Die „pm“-Modi:



| Mode | Verhalten | Anwendungsfälle |

| --- | --- | --- |

| **dynamisch** | Spawn zwischen Minimum und Maximum je nach Last | Variable Standorte, guter Kompromiss |

| **statisch** | Immer max. aktive Arbeiter | Stabiles Laden, minimale Latenz |

| **auf Anfrage** | Bei Bedarf erstellt, Leerlaufzeitüberschreitung | Sehr eingeschränkter RAM, Kaltstart möglich |



:::Hinweis

**Denken Sie daran.** Das Erhöhen von max_children ohne Messung des RAM pro Worker verschiebt nur den Engpass: von der Warteschlange zum Swap und dann zum Absturz.

:::



## slowlog, request_terminate_timeout und häufige Fehler



**`request_slowlog_timeout`** (z. B. 5 s) + **`slowlog`** = Liste von Skripten, die Arbeiter monopolisieren. Korrigieren Sie den Code, bevor Sie Prozesse hinzufügen.



**`request_terminate_timeout`** unterbricht ein unendliches Skript – nützlich, kann aber bei schlechter Einstellung legitime Importe abschneiden.



Klassische Fehler:



1. **Kopieren Sie einen Produktionspool in einen gemeinsam genutzten Pool** – unterschiedliche Limits, Konto gesperrt.

2. **MySQL ignorieren** – 50 Worker × langsame Abfragen = 50 gesättigte DB-Verbindungen.

3. **OPcache deaktiviert oder falsch dimensioniert** – jeder Worker lädt den Bytecode neu, RAM überhöht (siehe [OPcache](/de/blog/opcache-php/)).

4. **hohe max_children + kein Seiten-Cache** – WordPress berechnet bei jedem Treffer alles neu.



## Die Spitze: Mehr Arbeiter verbergen eine langsame Anwendung



:::Höhepunkt

**PHP-FPM macht Ihren Code nicht schneller – es entscheidet, wie viele langsame Abfragen parallel ausgeführt werden können, bevor alles zusammenbricht.** Die Verdoppelung der Worker eines WordPress-Plugins auf 3 Sekunden Rendering verdoppelt größtenteils den Druck auf MySQL und die RAM-Rechnung. Die FPM-Einstellung optimiert die **Kapazität**; Profiling optimiert die **Dauer**.

:::



Das ist der Punkt, an dem die „unbegrenzten“ Angebote scheitern: Unbegrenzt auf der Besucherseite bedeutet nicht unbegrenzt auf der Seite des PHP-Prozesses.



## Entscheide dich und gehe ohne blinden Fleck voran



1. **Messen** Sie RAM/Worker und Tail-Länge unter tatsächlicher Last.

2. **Berechnen** max_children mit Marge; Wählen Sie dynamisch oder statisch.

3. **Aktivieren** Sie Slowlog und reparieren Sie die aufgelisteten Skripte.

4. Last und TTFB **erneut testen**; Vergleichen Sie Unterkünfte nur, wenn der Pool in Ordnung ist.



Für eine Upstream-Diagnose lesen Sie [Hohe TTFB](/de/blog/ttfb-diagnostic/). Um einen VPS mit vollem Poolzugriff zu filtern, durchsuchen Sie das [Verzeichnis](/de/verzeichnis/) oder den [Vergleich](/de/vergleich/).



## Häufig gestellte Fragen



### Wie berechnet man pm.max_children?



Für PHP verfügbarer RAM geteilt durch den durchschnittlichen Verbrauch eines Workers unter Last, mit einer Marge von 20–30 %.



### dynamisch, On-Demand oder statisch: Was soll ich wählen?



dynamisch für variablen Verkehr; statisch für stabile Belastung; OnDemand, wenn der Arbeitsspeicher sehr begrenzt ist und Sie mit der Startlatenz einverstanden sind.



### Was tun, wenn das Slowlog die Festplatte füllt?



Realistischer Schwellenwert, Skriptkorrektur, nicht nur Protokollrotation.



### Kann der Host meine FPM-Änderungen blockieren?



Ja, geteilt; Auf VPS kontrollieren Sie den Pool – prüfen Sie die vertraglichen Grenzen.



---



Bevor Sie die Worker erhöhen, fragen Sie: *Wie viele MB pro Anfrage und wie viele Sekunden pro Skript?* Wenn Sie es nicht wissen: FPM-Tuning ist eine Lotterie – keine Ausbeutung.

Europäische Hoster vergleichen

Filtern nach Compliance, Standort und Einsatzzweck — dann die Datenblätter öffnen, um den echten Umfang zu prüfen.

Verzeichnis durchsuchen
Blog

Weiterlesen

Alle Artikel →