Ab wieviel Last FastCGI statt CGI?
-
Ich will mich demnächst mal an einem kleinen Webprojekt mit C++ versuchen und bin am überlegen, ob es sich für mich lohnt, FastCGI zu verwenden. Ab wievielen Benutzeren gleichzeitig fällt es denn ins Gewicht, ob nun für jeden eine eigene Instanz des Programms gestartet wird oder nur ein Thread (so ist das doch bei FastCGI, oder nicht?)?
Lieber wäre mir nämlich eigentlich, nur CGI zu verwenden, denn da braucht man ja soweit ich weiß keine zusätzlichen Bibliotheken (zur Standardbibliothek).Danke schonmal für eure Antworten!
-
Ab dem 2. parallelen Benutzer fällt es auf. Aber das wirklich interessante ist: wieviel User erwartest du und wieviel Overhead bedeutet ein Start deiner Binary.
Für ~100 Leute sollte es kein Problem sein - relevant wird es halt dann wenn der Server stark ausgelastet wird weil mehrere Tausend Leute rauf wollen.
-
Die korrekte Antwort lautet: es kommt darauf an. Es kommt darauf an, wie schnell der Rechner ist, wie viele Seitenabrufe ein einzelner Benutzer macht, wie komplex Deine Applikation ist, welche Technik zur Erstellung deiner Applikation Du verwendest, welche Antwortzeiten Du Deinen Anwendern zumuten möchtest und so weiter.
Wenn Du 120 Leute hast, die gleichzeitig deine Seite besuchen, indem sie eine Seite aufrufen und dann eine Minute lesen, dann hat der Server 0,5 Sekunden Zeit, eine Seite zu generieren. Das sollte selbst für CGI reichen. Auf der anderen Seite willst Du vielleicht nicht, daß ein Anwender 0,5 Sekunden wartet.
Nur um mal die Grössenordnung zu nennen: ich habe mal einen einfachen Benchmark auf meinem Rechner gemacht. Ein Perl-CGI-Skript hat ca. 28 requests pro Sekunde geschafft. CGI mit C ca. 80, Fast-CGI mit Perl lag bei ca. 300, PHP bei 750 und JSP bei 1200. Statische Seiten bei 3000.
-
Wo liegt deine C++-Implementation? Welchen Server hast du verwendet?
MfG SideWinder
-
aus einem CGI ein FastCGI zu machen ist ja keine große Schwierigkeit. Aber an deiner Stelle würde ich gleich auf FastCGI setzen. Der Mehraufwand ist wie gesagt: sehr klein.
@tntnet
das war aber ein Apache? Probier das mal mit lighttpd.
-
SideWinder schrieb:
Wo liegt deine C++-Implementation? Welchen Server hast du verwendet?
MfG SideWinder
Das war Apache. Tntnet und Lighttpd habe ich auch ausprobiert. Lighttpd ist, soweit ich mich erinnern kann, um ca. 20-30% schneller als Apache und Tntnet ist schneller als Apache aber langsamer als lighttpd. Wobei Tntnet grundsätzlich dynamische Seiten macht und die Apache- und lighttpd-Tests natürlich statische verwenden.