http://www.pronix.de -> Tutorials -> FastCGI mit C

Schnelle Webanwendungen mit FastCGI

Autor: Martin Conrad

Beim Erstellen von Webanwendungen die mit der CGI-Schnittstelle(Common Gateway Interface) kommunizieren stösst man bei Seiten mit sehr viel Traffic, oder bei Anwendungen mit hoher Laufzeit schnell an seine Grenzen, da der Webserver für jede Clientanfrage das Programm als eigenen Prozess starten muss.
Wenn dies hunderte von Prozessen gleichzeitig sind steht der Webserver unter hoher Last und kann die Anfragen nicht mehr in einer akzeptabelen Zeit verarbeiten.

Aus diesem Grunde wurden für viele Scriptsprachen Module entwickelt, die den Interpreter der Sprache zur Startzeit des Servers laden, um so die vielen forks zu verhindern.
Durch diese Module sind kleine Scripte oft wesendlich schneller als kompilierte Binärprogramme, die erst vom Webserver gestartet werden müssen. Erst bei einer gewissen Laufzeit lohnt es sich daher eine Anwendung als binary zu erstellen, da die Performance des binarys dann die Zeit des Programmaufrufs wieder wettmacht.
Aber auch dann gibt es den Wehrmutstropfen, dass der Server langsamer wird, wenn er sehr viele dieser forks durchführen muss.
An dieser Stelle wird oft ein kostenintensives Loadbalancing genutzt, um die Last auf mehrere Server zu verteilen.

FastCGI bietet die Möglichkeit eine Anwendung unabhängig von der benutzten Sprache als Server-Modul laufen zu lassen und somit diese forks zu vermeiden.
Darüber hinaus können Anwendungen stark beschleunigt werden, da Arbeiten der Anwendung, die bei jedem Aufruf gleich sind im Voraus, anstatt bei jeder Anfrage zu erledigen, wodurch die Performance noch einmal stark verbessert werden kann.
Eine Anwendung, die als FastCGI läuft wird bei der ersten Anfrage eines Clients gestartet und dann nicht terminiert, was wiederum zu einer IPC(Inter Prozess Communication) mit dem bereits laufenden Programm genutzt werden kann.

Das FastCGI Modul steht für die folgenden Server zur Verfügung, bei diesem Tutorial beziehe ich mich auf den Apache Webserver in der Version 2:

Programm-Bibliotheken stehen für die folgenden Sprachen bereit. Ich beziehe mich in diesem Howto auf die Verwendung von C-Programmen als FastCGI:

  • C
  • C++
  • Common Lisp
  • Guile Scheme
  • Goanna Eiffel
  • Java
  • Perl
  • Python
  • Ruby
  • TCL
  • SmallEiffel
  • Smalltalk
  • VMS

Eine Dokumentation, sowie die Downloads der einzelnen Bibliotheken und natürlich die Server Module selbst finden Sie auf der Herstellerseite von FastCGI: http://www.fastcgi.com/

Bevor Sie sich eingehender mit FastCGI beschäftigen ist ein Grundsätzliches Verständnis des CGI notwendig. Ich empfehle zuerst die Seite CGI mit C und die dazugehörigen Unterseiten zu lesen.
Dieses Tutorial deckt bei weitem nicht die Thematik von FastCGI ab. Es soll in erster Linie ein Einstieg in das Erstellen von schnellen Webanwendungen gegeben werden. Wenn Sie vorhaben umfangreichere Anwendungen mit der Schnittstelle zu erstellen werden Sie für weiterführende Informationen die hervorragende englische Dokumentation lesen müssen, die den Distributionen beiliegt.

Weiter mit Installation von mod_fastcgi und Konfiguration für den Apache Webserver