weblogic Server內(nèi)部結(jié)構(gòu)圖:

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