2008-12-20 42 views
14

我正在用Perl開發一個Web應用程序,其中包含一些必要的C語言,用於一些重型數字運算。到目前爲止我所面臨的主要問題是試圖決定是否應該使用mod-perl,mod-fastcgi或兩者來運行我的腳本,因爲我很難分析每個mod的優缺點。mod_perl vs mod_fastcgi

任何人都可以發佈摘要或給出一個鏈接,我可以找到一些比較信息,也許一些建議與例子?

回答

22

他們是完全不同的野獸。

mod_fastcgi(順便說一下,推薦使用mod_fcgid)只是支持FCGI協議,通過一些旋鈕可以更快地執行CGI,以控制同時運行多少個進程,而不是更多。

另一方面,mod_perl是一個開發應用程序的平臺,它將大多數Apache內部信息公開給您,因此您可以調整代碼中的每個Web服務器旋鈕,加速CGI和much more

如果你只想快速運行你的CGI,並且想要支持儘可能多的主機,你應該堅持支持這兩種方式來運行你的代碼,也可能是標準的CGI。

如果你關心靈活性的最大效率,你可以可能旨在爲一個單一的平臺,可能mod_perl。

但最有可能的選擇是在任何地方運行,並使用框架來構建應用程序,該應用程序將使用如果存在的特定執行方式(如Catalyst)的優點。

7

我會建議你使用一個框架,如Catalyst來照顧這些細節。對於大多數應用程序而言,只要程序以高效的方式完成,程序如何連接到Web服務器並不重要。 mod_perl和FastCGI之間的選擇應該由部署它的系統管理員進行,而不是開發人員。

+7

我不同意它應該是sysadmin的工作。如果程序員想要訪問Apache內部部件,以使您的產品具有您的決定的優勢,而不是機器的管理員。希望你的組織安裝好,以便系統管理員支持該產品,而不是其他方式。 – mpeters 2008-12-20 17:29:14

+0

如果您的應用程序是您業務的核心,那麼我同意,但在許多情況下,情況並非如此,您必須處理現有的基礎架構。 – 2008-12-20 22:10:57

4

這裏是mod_perl下,的mod_fastcgi,CGI(Perl的)和一個Java servlet的一些實際性能比較的網站 - 一個非常基本的腳本:https://sites.google.com/site/arjunwebworld/Home/programming/apache-jmeter

總結:

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. 

有在PerlMonks上比較mod_perl和fastcgi的舊線程:http://www.perlmonks.org/?node_id=108008