處理Weblogic卡住的線程

定義或卡線是什么?
?
如果線程 在設定 的時間 內連續工作(非空閑),則WebLogic Server會將其診斷為阻塞
您可以通過更改在診斷出線程被阻塞之前的時間長度( Stuck Thread Max Time ),以及通過更改服務器檢查線程是否被阻塞的頻率,來調整服務器的線程檢測行為。 在此處查看如何更改“粘線最大時間”。

問題還是為什么“粘線”是邪惡的?
?
WebLogic Server自動檢測執行隊列中的線程何時變為“阻塞”狀態。 由于卡住的線程無法完成其當前工作或接受新工作,因此服務器每次診斷出卡住的線程時都會記錄一條消息。 如果執行隊列中的所有線程都卡住了,則服務器會根據執行隊列將其運行狀況更改為“警告”或“嚴重”:

  • 如果默認隊列中的所有線程都卡住了,則服務器會將其運行狀況更改為“ 嚴重” 。 (您可以將Node Manager應用程序設置為在嚴重運行狀況下自動關閉和重新啟動服務器。有關更多信息,請參閱“配置和管理WebLogic Server”中的“ Node Manager功能 ”。)
  • 如果weblogic.admin.HTTP,weblogic.admin.RMI或用戶定義的執行隊列中的所有線程都卡住了,則服務器會將其運行狀況更改為“ 警告”
因此,實際上,幾個“阻塞線程”可能不會使服務器崩潰,從而阻止服務器處理請求,但這是一個不好的信號。 通常,卡住的線程數將增加,并且服務器最終將崩潰。

您可以采取什么措施來避免應用程序完全失敗?
?

WebLogic Server會定期檢查卡住的線程(這是“ 卡住線程計時器間隔” ,您可以在此處進行調整)。 如果所有應用程序線程都卡住,則服務器實例將自身標記為失敗,如果配置為失敗,則退出。 您可以配置節點管理器或第三方高可用性解決方案以重新啟動服務器實例以進行自動故障恢復。您可以將以下操作配置為在并非所有線程都被阻塞但被阻塞的線程數超過配置的閾值時發生:如果工作管理器卡住了線程,請關閉它。 關閉的工作管理器將通過發送拒絕消息來拒絕新工作并拒絕隊列中的現有工作。 在群集中,群集客戶端將故障轉移到另一個群集成員。
  • 如果應用程序中存在線程阻塞,請關閉應用程序。 通過將其置于管理模式來關閉該應用程序。 屬于該應用程序的所有工作管理器都將關閉,并按上述方式運行。
  • 將服務器實例標記為失敗,如果服務器中存在線程阻塞,則將其關閉。 在群集中,已連接或嘗試連接的群集客戶端將故障轉移到另一個群集成員。

如何識別問題?
?

推薦的方法是檢查線程轉儲。 選中“ 發送電子郵件警報以查找有關帶有線程轉儲的線程卡住的中間件魔術文章” ,使線程轉儲在發生時自動發送給您。

可以幫助您分析線程轉儲的工具有:

  • 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

控件自定義左鍵點擊消息相應函數的問題(請懂的人來解答一下)

【問題描述】 自定義CTouchInputEdit類&#xff0c;繼承自CEdit。 實現一個新的功能&#xff0c;當點擊edit控件的時候&#xff0c;彈出一個輸入框。 下面的代碼片段1&#xff0c;當點擊控件之后&#xff0c;會彈出輸入框&#xff0c;退出輸入框以后&#xff0c;在窗體的任何位…

電話圈(floyd)

題意&#xff1a; 如果兩個人相互打電話&#xff0c;則說他們在同一個電話圈里。例如&#xff0c;a打給b&#xff0c;b打給c&#xff0c;c打給d&#xff0c;d打給a&#xff0c;則這4個人在同一個圈里&#xff1b;如果e打給f但f不打給e&#xff0c;則不能推出e和f在同一個電話圈…

計算機二級網址打不開,大神為你解決win7系統打不開二級網頁鏈接的操作教程...

許多win7系統電腦的時候,常常會遇到win7系統打不開二級網頁鏈接的情況&#xff0c;比如近日有用戶到本站反映說win7系統打不開二級網頁鏈接的問題&#xff0c;但是卻不知道要怎么解決win7系統打不開二級網頁鏈接&#xff0c;我們依照首先我們打開IE瀏覽器&#xff0c;然后點擊上…

3步實現Jetty和Eclipse集成

本教程將引導您逐步了解如何集成Jetty和Eclipse&#xff0c;以及如何在Eclipse中的Jetty服務器上運行Web應用程序。 腳步&#xff1a; 安裝Jetty Eclipse插件 建立網路應用程式 運行網絡應用 1 –安裝Jetty Eclipse插件 將服務器添加到“服務器”視圖時&#xff0c;將不會…

【Linux開發】如何更改linux文件的擁有者及用戶組(chown和chgrp)

本文整理自&#xff1a; http://blog.163.com/yanenshun126/blog/static/128388169201203011157308/http://ydlmlh.iteye.com/blog/1435157一、基本知識在Linux中&#xff0c;創建一個文件時&#xff0c;該文件的擁有者都是創建該文件的用戶。該文件用戶可以修改該文件的擁有者…

使用Akka處理1000萬條消息

Akka演員承諾并發。 有什么更好的模擬方式&#xff0c;看看使用商品硬件和軟件處理1000萬條消息需要花費多少時間&#xff0c;而無需進行任何低級調整。我用Java編寫了整個1000萬條消息的處理過程&#xff0c;整個結果令我驚訝。 當我在具有Intel i5 – 4核&#xff0c;4 Gb RA…

PHP中unset,array_splice刪除數組中元素的區別

php中刪除數組元素是非常的簡單的&#xff0c;但有時刪除數組需要對索引進行一些排序要求我們會使用到相關的函數&#xff0c;這里我們來介紹使用unset,array_splice刪除數組中的元素區別吧 如果要在某個數組中刪除一個元素&#xff0c;可以直接用的unset&#xff0c;但是數組的…

dart服務器開發性能,DartVM服務器開發(第四天)--代碼優化

優化請求上一篇文章中&#xff0c;我們通過依賴第三方http_server這個包實現將html頁面返回給瀏覽器&#xff0c;但是一般的服務器都包含請求html&#xff0c;json格式的傳遞&#xff0c;這樣就有可能造成了混亂&#xff0c;下面我們使用http_server這個包進行優化吧&#xff0…

JBox2D和JavaFX:事件與力量

在昨天的示例中&#xff0c;您看到了如何創建一個簡單的世界并使用WorldView進行顯示&#xff0c;以及如何提供自定義渲染器。 現在&#xff0c;我們將添加一些用戶輸入。 我們將創建一個類似于彈球機中的鰭狀肢的控件。 為此&#xff0c;我們將創建一個關節。 在JBox2D中&…

【Android】SVG和VectorDrawable——相關格式轉換

SVG是矢量圖&#xff0c;剛接觸尚不能仔細介紹&#xff0c;但只需記得一點&#xff1a;放大不失真&#xff0c;存儲也方便。 因為多數戶型圖使用SVG格式&#xff0c;Android要用的話必須通過相關轉換工具&#xff0c;將原SVG格式文件&#xff0c;轉換為XML后綴的VectorDrawable…

服務器時間維護制度,網絡設備及服務器日常維護管理制度

第一章總則第一條&#xff1a;為保證機房設備與信息的安全&#xff0c;保障本校服務器及網絡系統在良好、穩定、高效、快速的安全運行。特制定本制度。第二條&#xff1a;為確保中心機房網絡設備特別是服務器安全&#xff0c;根據崗位職責設立機房管理員&#xff0c;負責對機房…

SELinux入門簡介

操作系統有兩類訪問控制&#xff1a;自主訪問控制&#xff08;DAC&#xff09;和強制訪問控制&#xff08;MAC&#xff09;。標準Linux安全是一種DAC&#xff0c;SELinux為Linux增加了一個靈活的和可配置的的MAC。 進程啟動時所擁有的權限就是運行此進程的用戶權限&#xff0c;…

RESTEasy教程第3部分:異常處理

在開發軟件應用程序時&#xff0c;異常處理是顯而易見的要求。 如果在處理用戶請求時發生任何錯誤&#xff0c;我們應該向用戶顯示一個錯誤頁面&#xff0c;其中包含詳細的異常消息&#xff0c;錯誤代碼&#xff08;可選&#xff09;&#xff0c;更正輸入和重試的提示&#xff…

WinForm關閉窗體徹底的退出方式

//System.Environment.Exit(0); //Process.GetCurrentProcess().Kill(); //System.Threading.Thread.CurrentThread.Abort(); System.Diagnostics.Process.GetCurrentProcess().Kill();Application.Exit(); 轉載于:https://www.cnblogs.com/XuPengLB/p/5799178.html

創建css的時候選擇器有哪幾類,CSS3-CSS的選擇器共有幾類?

CSS 3對屬性選擇器的又增加了3種子字符串的匹配方式&#xff1a;E[att^"val"]匹配所有E元素中att屬性的值以“val”開始的所有元素。E[att$"val"]匹配所有E元素中att屬性的值以“val”結束的所有元素。E[att*”val”]匹配所有E元素中att屬性的值中包含字符…

在Grails 2.0中使用Servlet 3.0異步功能

上周&#xff0c;我與某人談論了Grails 2中對Servlet 3.0異步功能的新支持&#xff0c;并意識到我對可用功能并不了解。 所以我想我會嘗試一下并分享一些例子。 該文檔對這個主題有些了解&#xff0c;因此首先介紹一些背景信息。 在3.0規范中進行異步工作的主要方式是javax.ser…

接口怎么實例化?

最開始看到數據庫連接的時候忽然想到這個問題&#xff1a; Connection connull;try {Class.forName(Driver);} catch (ClassNotFoundException e) {e.printStackTrace();}try {conDriverManager.getConnection(url, user, pass);} catch (SQLException e) {e.printStackTrace()…

css中基線指的是哪一條線,如何設置基線網絡_CSS, Vertical Rhythm 教程_W3cplus

首先&#xff0c;當談到排版&#xff0c;我們先要了解基線是什么&#xff1f;維基百科是這樣定義)的&#xff1a;在排版和書法中&#xff0c;基線是以字終sit底線為基礎&#xff0c;并且向兩邊延伸的直線。好極了&#xff0c;但我為什么要忽視他呢&#xff1f;好希望你充滿激情…

libvirt里的面向對象的C語言

C語言&#xff1a;類的聲明和定義 1 // 通用父類的定義2 struct _virClass {3 virClassPtr parent;4 5 unsigned int magic;6 char *name;7 size_t objectSize;8 9 virObjectDisposeCallback dispose; 10 }; 11 typedef struct _virClass virClass; 12 typ…

使用JGroups進行ElasticMQ消息復制

ElasticMQ是一臺消息服務器&#xff0c;具有Scala&#xff0c;Java和與Amazon SQS兼容的接口。 它通過跨服務器群集復制消息來支持有保證的消息傳遞&#xff0c;并通過日志記錄實現消息持久性。 消息復制是ElasticMQ的核心功能之一。 但是&#xff0c;如果您看一下代碼&#xf…