我有一個運行在Tomcat下的現代webapp,通常需要調用一些遺留的perl代碼才能獲得一些結果。現在,我們在撥打Runtime.getRuntime().exec()
這個工作正常。運行從Tomcat中調用的Speedy或PersistentPerl的多個副本
但是,隨着Web應用程序越來越繁忙,我們注意到perl經常超時,我們需要控制它。
我使用commons-pool
以確保一次只能運行X個副本,並且線程在需要時會很好地爲perl實例排隊,在Y秒後超時並返回錯誤(這是沒問題,客戶只會重試)。
但是我們仍然有Perl需要很長時間才能啓動,解釋腳本,執行並返回的問題。在繁忙的時候,我們每秒鐘做30-50次。這是一臺結實的機器,但它開始掙扎。
我已閱讀Speedy
和PersistentPerl
,並且正在考慮在內存中爲我的池中的每個對象打開一份副本,以便我們不必每次都打開和關閉Perl。
這是個好主意嗎?有關如何去做這件事的任何提示?