[Technik] FastCGI (Benchmark)

Michael Hierweck team at edv-serviceteam.net
Mon Nov 26 21:25:31 CET 2007


Hallo Christof,

Christof Donat wrote:
>
> Ich nenn dann mal ein paar Parameter, die du wahrscheinlich inzwischen auch 
> kennst:
> 1. Mit FastCGI wird ein eigener Application Server pro Skript instanziiert.
> 2. Der Application Server kommuniziert mit dem Webserver per Unix Domain 
> Sockets.
> 3. Der Umweg mit cgi-fcgi läuft so, dass Apache ein cgi Skript mit den Rechten 
> des entsprechenden Users ausführt, das dann mit dem Application Server 
> spricht. Damit kann das FastCGI Protokoll nicht vollständig ausgenützt 
> werden.

Richtig, in der gestesteten Konfiguration wird nach wie vor ein
CGI-Prozess (das Wrapper-Skript bzw. der modifizierte stub) angestoßen.

> 4. Wenn wir ein Apache Modul für FastCGI verwenden, können wir den extra 
> Prozess für das CGI Skript sparen.

Genau.

> 5. Wenn wir mod-php durch einen zentralen FastCGI Server ersetzen, können wir 
> mit dem Umstieg auf Apache2 sogar ein anderes MPM verwenden und damit 
> möglicherweise die Gesamtperformance noch weiter steigern. Das MPM "worker" 
> soll recht gut sein, aber mod-php verlangt unbedingt nach "prefork". 
> Voraussetzung dafür ist natürlich, dass uns sonst kein Modul davon abhält.

Das sagt mir jetzt so direkt nichts.

> 6. Wir könnten auch mehrere zentrale PHP-FastCGI Server für verschiedene PHP 
> Versionen laufen lassen.

Wir wollen eigentlich keine Codeausführung von User-Code mehr unter
Prozesse anderer User, also kein User-PHP als httpd etc.

Ist das bei den zentralen Prozessen nicht so?

> Insgesamt ist eben die Gefahr, dass FastCGI Application Server sich im RAM 
> breitmachen und der Server ins swappen gerät.

Ja, wobei ich mich frage, ob das Paging/Swapping eines selten benutzen
PHP-Prozesses aufwendiger ist, als der entsprechende klassische
PHP/CGI-Start - der ja auch IO-Operationen erfordert, wenn das Skript
nicht mehr im Cache lag. Also weniger IO für das Einlesen von Skripten,
dafür mehr IO für das Ein- und Auslagern von PHP-Prozessen. (Für andere
Sprachen analog.)

Die Frage ist: wie bekommen wir heraus, wie es sich in der Praxis
verhält? h51 ist da nicht repräsentativ, weil es genug RAM gibt und nur
einen Prozess. Also wurde natürlich nicht geswappt.

> In den meisten Fällen kann man FastCGI Server recht schmerzlos abschießen, 
> wenn das Modul, bzw. cgi-fcgi so konfiguriert ist, dass es den Server im 
> Zweifel einfach neu startet. Damit können die Hostmaster im Zweifel 
> eingreifen (eventuell sogar mehr oder weniger automatisiert) ohne zu viel 
> kaput zu machen.

So sollte es sein.

Viele Grüße

Michael

-- 
EDV-Serviceteam Werthmann & Hierweck GbR
Annika Werthmann, Michael Hierweck
Egerstraße 53, 44225 Dortmund
http://www.edv-serviceteam.net


More information about the Technik mailing list