weblogic Server內部結構圖:

(一) 原理簡單說明
服務器啟動,就會綁定到相應的端口,并為一個端口分配一個線程以接受連接請求,一旦服務器接受到連接請求并建立好連接以后,監(jiān)聽線程將處理權交給套接字復用器,套接字復用器進行一定的處理,并會負責選擇利用那個執(zhí)行隊列并將請求置入其中。當有一個請求進入執(zhí)行隊列,就會有一個空閑的執(zhí)行縣城從該隊列里面取走并向調用者返回結果。
(二) 執(zhí)行隊列和執(zhí)行線程的相關配置
執(zhí)行線程數(shù)量有一定的限制,在服務器啟動的時候,就已經形成了一個含有一定數(shù)量執(zhí)行線程的池,執(zhí)行線程可能跨servlet,ejb和jdbc等,由于執(zhí)行線程僅當程序成功結束或者出現(xiàn)異常才能被釋放繼續(xù)處理其他請求,所以如果執(zhí)行線程執(zhí)行的不夠快,而請求又多的情況下,就會造成執(zhí)行隊列的阻塞。
相關的配置信息有:
server菜單—〉configuration頁---〉高級配置---〉Config Execute Queues中的配置項如下:
1、Queue Length隊列長度,執(zhí)行隊列的長度
2、Queue Length Threshold Percent 一個百分數(shù),當request的數(shù)量達到隊列長度的這個比例的時候,weblogic會發(fā)出overflow的標志信息。
3、Thread Count 服務器初始創(chuàng)建的執(zhí)行線程的數(shù)量
4、Thread Increase 如果weblogic發(fā)出overflow的標志信息,weblogic會嘗試增加這個數(shù)量的執(zhí)行線程,以解決處理矛盾。
5、Threads Maximum最大執(zhí)行線程數(shù)
6、Threads Minimum最小執(zhí)行線程數(shù)
7、Thread Priority線程優(yōu)先級
另外server菜單—〉configuration頁---〉tuning子頁中還有一些相關的配置:
1、 Stuck Thread Max Time 黏聯(lián)線程時間,超過這個時間沒有返回的執(zhí)行線程,系統(tǒng)將認為是黏聯(lián)線程。
2、 Stuck Thread Timer Interval 系統(tǒng)檢查黏聯(lián)線程的時間間隔
如果weblogic認為某個隊列中的所有的線程全部黏聯(lián)的話,weblogic將會增加執(zhí)行線程的數(shù)量。
注意:執(zhí)行線程的數(shù)量一旦增加,目前weblogic不會去減少他,如果增加了一些線程以后再次出現(xiàn)overflow的警告,weblogic會繼續(xù)增加執(zhí)行線程的數(shù)量,一直到達到上限為止。
(三) 套接字復用器的相關配置
Weblogic帶有兩個版本的套接字復用器,純java版和本地接口版(jni),一般來說在訪問量小的情況下,java版比jni版性能要好一些,因為jni的API調用會損失一部分性能,但是訪問量大的情況,一般都是jni版的性能比較好,所以盡量保證weblogic實用本地接口版的套接字復用器。
相關的配置參數(shù)有兩個,在server菜單—〉configuration頁---〉tuning子頁中的第一個和第二個配置項。
Enable Native IO :啟用本地IO,勾選這個配置以后,weblogic就會啟用本地接口版的套接字復用器
Socket Readers :如果不選上一個選項,則這個選項可用,也就是說java版的套接字復用器會被啟用,并且,java版的復用器會從執(zhí)行線程中抽出這個比例的線程用于處理socket的請求。(和java客戶端訪問有關?)