Der Webserver liefert statische Dateien selbst aus und reicht PHP-Anfragen über einen Unix-Socket oder TCP-Port an PHP-FPM weiter. Jeder Pool hat eigene Einstellungen, Benutzer und Limits, was mehrere Anwendungen sauber voneinander trennt.
Die wichtigste Stellschraube ist pm.max_children: Sie begrenzt, wie viele Anfragen gleichzeitig laufen. Zu niedrig, und Anfragen stauen sich (Log: server reached pm.max_children setting). Zu hoch, und der Arbeitsspeicher reicht nicht, bis der OOM-Killer Prozesse beendet.
Faustregel: verfügbarer RAM für PHP geteilt durch den durchschnittlichen Speicherbedarf eines Prozesses. Läuft PHP-FPM nicht oder ist der Socket-Pfad falsch, antwortet nginx mit 502, bei überlangen Skripten mit 504.
Beispiel
grep -E '^pm' /etc/php/8.3/fpm/pool.d/www.conf