2011-06-08 55 views
0

我想請教你。在我們公司,我們在Windows機器上安裝了Bugzilla 4.0。爲了運行perl,我們正在使用ActivePerl。

問題是,我們有大約50位用戶定期查詢Bugzilla Web服務,並且服務器無法接受此負載。我們發現,它是由每個請求期間正在運行的perl.exe引起的。峯值期間,服務器工作負載(CPU)達到90%。

你有沒有經歷過這個問題?是否有可能的配置,我們可以改善性能?

我們正在使用:Apache 2.2.17和ActivePerl 5.8.9 b829。 非常感謝你提前,它導致我們(特別是我)很多麻煩。Windows上的ActivePerl/Apache性能問題

+0

http://stackoverflow.com/questions/6003442/bugzilla-performance-slow – daxim 2011-06-08 09:41:19

回答

2

這是一個相當普遍的問題,因爲網站增長。它並不特別限於Perl。有解決方案。正如一個人提到的,有mod_perl,它本質上被安裝爲Apache模塊。它可以通過Apache :: Registry以一種簡單的版本使用,或者您可以通過編寫在每個請求階段與Apache API交互的組件來完成。無論您使用mod_perl採取什麼方法,都有一些常見的注意事項:它是一個持久的過程,意思是(簡單地說),Perl從一個請求到下一個到下一個請求保持駐留,這樣可以消除啓動成本。沒有一定數量的清理和重構,CGI腳本通常無法直接移植到mod_perl。由於腳本在持久性環境中運行,因此全局變量不會在請求之間自行重置。有一整套需要克服的問題。爲此,Apache :: Registry在mod_perl環境中處理起來要容易一些,但代價是不能提供API編程所能提供的性能100%的性能。不過,這是一個相當不錯的妥協。

另一種選擇是FastCGI的,你可以在the FastCGI website.

寫得很好的CGI腳本瞭解可以被移植到mod_perl的或FastCGI的一些努力。這些可能是最不痛苦的方法,因此。一些腳本可以進行很少的清理轉換。其他人可能需要很多工作,但應該仍然有可能。

幸運的是,CPAN上有很多有用的模塊可以幫助您使用mod_perl或FastCGI。例如,在CPAN上的Apache :: *層次結構下,您會發現許多設計用於mod_perl的工具。關於FastCGI,你甚至可以找到Catalyst和Mojolicious相關的模塊來幫助融合這兩個模塊,儘管最後兩個建議可能需要一些真正的重構。

我發現實用的mod_perl是一個有用的起點(O'Reilly的書)。