默認情況下,WebLogic在15分鐘(600秒)後卡住卡住的線程,這由參數StuckThreadMaxTime
控制。但是,我無法找到關於如何定義「卡住」的更多細節。具體來說:WebLogic卡住線程保護
- 15分鐘倒計時開始的點數是多少?請求處理開始?最後
wait()
-like方法?還有別的嗎? - 這是否僅適用於請求處理線程或所有線程?即請求處理線程是否可以通過產生一個工作線程來「逃避」這種保護?特別是,它可以委託給沒有15分鐘倒計時的工作人員寫回應書嗎?
我的用例是通過權限系統下載大文件。由於用戶需要進行身份驗證並有權查看文件,因此我不能(至少不知道如何)將其保留在簡單的HTTP服務器上,例如, Apache的。由於文件可能很大,下載可能(至少在理論上)花費超過15分鐘。
好的,但據我所知,如果線程太多,它可以重新部署整個應用程序,不是嗎?我可能會因爲會話超時而混淆了事情 - 過去我們遇到了一些問題。關於文件 - 應用程序非常龐大而且很麻煩,沒有時間花在優化上,因爲總會有更多緊迫的問題。 – doublep 2010-04-26 17:17:58
如果線程過多,服務器將停止響應新請求 - 但在您的情況下,它們並非真正「卡住」,而是正在處理長請求。一個更好的方法是給FileDownloadServlet它自己的執行線程池 - 在WL10上這將是一個專用的WorkManager。這可以確保任何線程在下載過程中卡住/受到影響都不會影響處理普通請求的服務器的其餘部分。請參閱此處瞭解更多信息 - http://download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1059038。您可以爲該servlet定義一個調度策略。 – JoseK 2010-04-27 05:13:35
謝謝你的回答和澄清。 – doublep 2010-04-27 18:16:51