1,"weblogic.kernel.Default"是從客戶端提交請求后產生的線程所在的隊列名。這個隊列的線程數默認是15個。如果超過15個線程堵塞,則部署的應用將不能訪問。同時后台報:
<2008-2-27 下午09時37分48秒 CST> <Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '14' for queue: 'weblogic.kernel.Default' has been busy for "1,720" seconds working on the request "Http Request: /myapp/test/index.jsp", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
2,線程數(Tread Count):指派到weblogic.kernel.Default隊列的線程數。如果你不需要使用超過15個線程(默認),就不必更改這個屬性值。
如果發送該請求較多,很有可能會導致weblogic的線程阻塞,嚴重會引起weblogic掛起現象。
可以通過以下幾種方法解決:
1)修改StuckThreadMaxTime參數,將默認的600s改成1200s,或者其它適合的值。
2)增大線程數,防止線程阻塞問題。
3)優化程序,減少處理時間。
如何修改weblogic的weblogic.kernel.Default參數(最大線程數)
weblogic.kernel.default其實是一個WebLogic的核心參數,設置的值就是WebLogic用來響應客戶端請求的線程數量。也就是說,一個用戶登陸應用系統進行某操作,則WebLogic將從weblogic.kernel.default中分配一個線程給該用戶。默認情況下,這個參數值是40。比如對大的企業應用,同一時間登陸操作系統的用戶非常多,則40個線程就顯得太少了。同時,如果你的應用程序設計得不好,造成很多操作速度非常慢,因為WebLogic要等待你一個操作完成之后,才進行線程的回收處理,如果同一時間有很多線程在執行非常慢的操作,這也會引起線程數量不夠的問題。
具體的表現就是在WebLogic的控制台的myserver中的Monitoring頁面下的Performance頁面中,Queue Length顯示不是等於0,圖像可能是一個曲線。Queue Length這個參數的意義就是“在等待隊列里的請求數”。正常情況下,應該是0,圖像是一個水平的橫線。也就是沒有客戶端的請求會等待,都能及時的得到系統的處理。
如果確認是因為用戶過多的原因需要增大weblogic.kernel.default參數的值,我們怎么修改?
進入WebLogic控制台——左邊窗口的mydomain——servers——點擊myserver——Configuration——General——點擊Advanced Options的Show鏈接——最下面的Configure Execute Queues 鏈接——weblogic.kernel.Default鏈接——Thread Count參數。的卻是隱藏的比較深。修改Thread Count的值,然后重啟WebLogic就可以生效了。
如何修改weblogic默認線程池大小
weblogic 9.x使用了線程自調優技術。默認情況下,weblogic 9.x剛剛開始的時候是5個,線程數隨着業務要求自動進行增加或者減少。
如果不使用9.X的線程自調優的新特性,用兼容8.1線程方式8.1的兼容參數有兩個:
<self-tuning-thread-pool-size-min>和 <self-tuning-thread-pool-size-max>
1、修改weblogic domain的config.xml文件,在對應位置加入紅色標注的兩行內容:
<server>
<name>Adminserver</name>
<self-tuning-thread-pool-size-min>5</self-tuning-thread-pool-size-min>
<self-tuning-thread-pool-size-max>15</self-tuning-thread-pool-size-max>
...
</server>
2、在startweblogic.cmd腳本中加入一下java啟動參數:
-Dweblogic.configuration.schemaValidationEnabled=false
經測試32為windows操作系統上,同樣硬件條件下:weblogic9支持的最大線程數約為2900個,而tomcat6支持最大線程數約為1100多。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
官方文檔指出,WebLogic 9 / WebLogic 10 的線程池是自調優的,並且在WebLogic 9的時候,通過修改config.xml可以修改默認線程池的最小值、最大值,但是很麻煩。到了WebLogic 10gR3,連修改config.xml的辦法都給取消了。
但是,可以通過在啟動腳本增加如下參數,可以指定默認線程池的最小值、最大值:
本帖隱藏的內容需要回復才可以瀏覽
-Dweblogic.threadpool.MinPoolSize=100
-Dweblogic.threadpool.MaxPoolSize=500
經過測試,WebLogic 9.x / 10.x /10gR3 均起作用。