2008-12-20 7 views
14

Ich entwickle eine Web-app in Perl mit einigen C als notwendig für einige schwere Zahlknirschens. Das Hauptproblem, das ich bisher habe, ist zu entscheiden, ob ich mod-perl, mod-fastcgi oder beides benutzen soll, um meine Skripte zu starten, weil es mir schwer fällt, die Vor- und Nachteile jedes Mods zu analysieren.Mod_perl vs mod_fastcgi

Kann jemand eine Zusammenfassung schreiben oder einen Link geben, wo ich einige Vergleichsinformationen und vielleicht einige Empfehlungen mit Beispielen finden können?

Antwort

22

Sie sind ganz unterschiedliche Tiere.

mod_fastcgi (übrigens, mod_fcgid wird empfohlen) unterstützt nur das FCGI-Protokoll, um CGIs schneller mit einigen Knöpfen auszuführen, um zu steuern, wie viele Prozesse es simultan laufen und nicht viel mehr.

mod_perl, auf der anderen Seite ist eine Plattform für die Entwicklung von Anwendungen, die die meisten Apache-Interna Ihnen zur Verfügung stellt, so dass Sie jeden Webserver-Knopf aus Ihrem Code optimieren können, beschleunigt CGIs und much more.

Wenn Sie nur Ihre CGIs schnell ausführen und so viele Hosts wie möglich unterstützen möchten, sollten Sie diese beiden Möglichkeiten unterstützen, Ihren Code und wahrscheinlich auch Standard-CGI auszuführen.

Wenn Sie sich für maximale Effizienz auf Kosten der Flexibilität interessieren, könnten Sie Ziel für eine einzelne Plattform, wahrscheinlich mod_perl.

Aber wahrscheinlich ist die beste Option, überall zu laufen und ein Framework zu verwenden, um die Anwendung zu erstellen, die sich um die Vorteile einer bestimmten Ausführungsweise kümmert, falls vorhanden, wie Catalyst.

+0

Es scheint, dass das Framework [Catalyst] (http://www.catalystframework.org/) verschoben wurde. –

+0

Gibt es irgendwelche Geschwindigkeits-Benchmarks zwischen den beiden? – Hawken

7

Ich würde Ihnen raten, einen Rahmen wie Catalyst zu verwenden, die sich um solche Details nimmt. Für die meisten Anwendungen spielt es keine Rolle, wie sich das Programm mit dem Webserver verbindet, solange dies auf effiziente Weise geschieht. Die Wahl zwischen mod_perl und FastCGI sollte vom sysadmin getroffen werden, der es implementiert, nicht vom Entwickler.

+7

ich bin nicht einverstanden, dass es die Aufgabe der sysadmin sein sollte. Wenn Sie als Programmierer Zugriff auf Apache-Interna haben möchten, um Ihrem Produkt einen Vorteil zu verschaffen, entscheiden Sie nicht über den Administrator des Rechners. Hoffentlich ist Ihre Organisation so eingerichtet, dass Systemadministratoren das Produkt unterstützen und nicht umgekehrt. – mpeters

+0

Wenn Ihre Anwendung der Kern Ihres Geschäfts ist, dann stimme ich zu, aber in vielen Fällen ist das nicht der Fall, und Sie haben mit der vorhandenen Infrastruktur zu tun. –

+5

Dies ist eine Produktempfehlung mehr als eine Antwort. Sie beantworten nicht die Frage, wie sich fastcgi und mod_perl vergleichen lassen. – Hawken

4

Hier ist eine Website mit einigen tatsächlichen Leistungsvergleiche von mod_perl, mod_fastcgi, cgi (Perl) und ein Java-Servlet - für ein sehr einfaches Skript: https://sites.google.com/site/arjunwebworld/Home/programming/apache-jmeter

Zusammengefasst:

cgi - 1200+ requests per minute 
mod_perl - 6000+ requests per minute (ModPerl::PerlRun only) 
fast_cgi - 6000+ requests per minute 
mod_perl - 6000+ requests per minute (ModPerl::Registry) 
servlets - 2438 requests per minute. 

Es gibt ein alter Thread auf PerlMonks mod_perl und fastcgi Vergleich hier: http://www.perlmonks.org/?node_id=108008