?
問題還是為什么“粘線”是邪惡的?
?
WebLogic Server自動檢測執行隊列中的線程何時變為“阻塞”狀態。 由于卡住的線程無法完成其當前工作或接受新工作,因此服務器每次診斷出卡住的線程時都會記錄一條消息。 如果執行隊列中的所有線程都卡住了,則服務器會根據執行隊列將其運行狀況更改為“警告”或“嚴重”:
- 如果默認隊列中的所有線程都卡住了,則服務器會將其運行狀況更改為“ 嚴重” 。 (您可以將Node Manager應用程序設置為在嚴重運行狀況下自動關閉和重新啟動服務器。有關更多信息,請參閱“配置和管理WebLogic Server”中的“ Node Manager功能 ”。)
- 如果weblogic.admin.HTTP,weblogic.admin.RMI或用戶定義的執行隊列中的所有線程都卡住了,則服務器會將其運行狀況更改為“ 警告” 。
您可以采取什么措施來避免應用程序完全失敗?
?
- 如果應用程序中存在線程阻塞,請關閉應用程序。 通過將其置于管理模式來關閉該應用程序。 屬于該應用程序的所有工作管理器都將關閉,并按上述方式運行。
- 將服務器實例標記為失敗,如果服務器中存在線程阻塞,則將其關閉。 在群集中,已連接或嘗試連接的群集客戶端將故障轉移到另一個群集成員。
如何識別問題?
?
可以幫助您分析線程轉儲的工具有:
- TDA –線程轉儲分析器
- 武士
如何解決該問題?
?

以下是有關如何創建工作管理器的一些文章
- https://blogs.oracle.com/jamesbayer/entry/work_manager_leash_for_slow_js
- http://jdeveloperfaq.blogspot.com/2011/05/faq-34-using-weblogic-work-managers-to.html
測試:如何創建卡死線程?
?
如何創建“卡住線程”以測試您的weblogic設置? 將斷點放在隨您的請求調用的支持Bean或模型方法中。 如果您在斷點處等待“最大線程停留時間”,則會注意到服務器日志中將顯示“線程阻塞”跟蹤:
<16 =?? 2011 12:28:22 ?? EET><Error><WebLogicServer><BEA-000337><[STUCK] ExecuteThread: '2' for queue:
'weblogic.kernel.Default (self-tuning)' has been busy for "134" seconds working on the
request "weblogic.servlet.internal.ServletRequestImpl@6e6f4718[
GET /---/---/----/---/days.xhtml HTTP/1.1
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=DYG5TDTZSnKLTFw5CMMdLCD9sPsZS4Jqlmxj9wdGNyt1BnPcfNrR!-1520792836]", which is more than the configured time (StuckThreadMaxTime) of "60" seconds. Stack trace:--------------------------------------------(--------------------.java:83)javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:823)com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:285)com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:95)org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:76)org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:53)javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)javax.faces.render.Renderer.encodeChildren(Renderer.java:168)javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:229)org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:152)
更多挖掘:
- 弗蘭克·芒茨(Frank Munz)的精彩文章: WebLogic卡住了線程:創建,理解和處理它們 。 已針對Weblogic 12c更新。 還包括用于創建“粘滯線程”的示例應用程序。
- http://stackoverflow.com/questions/2709410/weblogic-stuck-thread-protection
src:
- Maxence Button的精彩文章: http : //m-button.blogspot.com/2008/07/using-wlst-to-perform-regular.html
- http://download.oracle.com/docs/cd/E13222_01/wls/docs81/perfor/WLSTuning.html#1125714
- http://download.oracle.com/docs/cd/E21764_01/web.1111/e13701/overload.htm
- http://java.sys-con.com/node/358060?page=0,0
參考:在ADF和Weblogic How To博客上, 與我們的JCG合作伙伴 Spyros Doulgeridis 處理Weblogic的卡死線程有關 。
翻譯自: https://www.javacodegeeks.com/2012/05/dealing-with-weblogic-stuck-threads.html