2014-11-17 41 views
0

我有一個運行在Tomcat下的現代webapp,通常需要調用一些遺留的perl代碼才能獲得一些結果。現在,我們在撥打Runtime.getRuntime().exec()這個工作正常。運行從Tomcat中調用的Speedy或PersistentPerl的多個副本

但是,隨着Web應用程序越來越繁忙,我們注意到perl經常超時,我們需要控制它。

我使用commons-pool以確保一次只能運行X個副本,並且線程在需要時會很好地爲perl實例排隊,在Y秒後超時並返回錯誤(這是沒問題,客戶只會重試)。

但是我們仍然有Perl需要很長時間才能啓動,解釋腳本,執行並返回的問題。在繁忙的時候,我們每秒鐘做30-50次。這是一臺結實的機器,但它開始掙扎。

我已閱讀SpeedyPersistentPerl,並且正在考慮在內存中爲我的池中的每個對象打開一份副本,以便我們不必每次都打開和關閉Perl。

這是個好主意嗎?有關如何去做這件事的任何提示?

回答

0

這些方法應該可以減少腳本啓動時的開銷。如果腳本是可以作爲CGI程序運行的,那麼你可能會更好地使它與Plack一起工作,並使用PSGI服務器運行它。您的Tomcat應用程序可以收集請求參數並將其發送到在後臺運行的腳本和/或「Web應用程序」。

相關問題