Unterschied FastCGI und FPM
- FastCGI
Pro Anfrage wird ein eigener PHP-Prozess gestartet. Bedenke, jeder Prozess kann so viel vom RAM beanspruchen, wie in den PHP-Einstellungen vergeben wurden. Steht dort 1GB und der Prozess braucht 1GB, wird es auf einem system schnell eng.Bei integrierten Eigenanwendungen im Shop kann man zuverlässig hier bei der Suche ansetzen.
Bzgl. des RAM-Verbrauchs via z.B. htop: Der RAM im System wird virtuell vergeben. Sprich: Ein Prozess reserviert sich RAM und bekommt diesen vom Kernel zugewiesen. Der Kernel entscheidet dabei allerdings ob der Prozess den RAM wirklich zugewiesen bekommt.
Alle Prozesse können maximal doppelt soviel Speicher reservieren wie vorhanden ist. Nutzen können sie davon natürlich nur die Menge des vorhandenen RAMs.
Der reservierte RAM ist im htop als VIRT zu sehen. Diesen Speicher KÖNNTE der Prozess nutzen ... ob er das aber wirklich tut steht auf einem anderen Blatt.
Beispiel bei einem vServer mit 36GB RAM: Die Prozesse möchten insgesamt 72 GB RAM haben - bekommen werden sie maximal 36. Möchte ein Prozess mehr RAM haben, muss er warten.
- FPM
Dynamic ist die bessere Lösung für dedizierte Server. Für Shared-Server wäre OnDemand ganz gut. MaxChildren ist die Anzahl der maximalen PHP-Prozesse für den User MaxRequests ist die Anzahl Anfragen an den PHP-Prozess, nachdem er sich wieder beendet.
MinSpare- und MaxSpare-Servers gibt bei Dynamic an, wieviele PHP-Prozesse immer in Reserve zur Verfügung stehen. Dieses steigert die Reaktionszeit, da das starten eines Prozesses natürlich etwas Zeit benötigt.
Wenn .htaccess-Dateien im Spiel sind, muss der Apache die PHP-Files bedienen da der nginx dieses nicht beherrscht. Würden keine .htaccess-Dateien benötigt, kann der nginx die PHP-Dateien bedienen. Das soll eine bessere Reaktionszeit bieten. Ob das wirklich beim User ankommt steht aber auf einem anderen Blatt.