weblogic Server內部結構圖:

r_3333.jpg
(一) 
原理簡單說明

服務器啟動,就會綁定到相應的端口,并為一個端口分配一個線程以接受連接請求,一旦服務器接受到連接請求并建立好連接以后,監聽線程將處理權交給套接字復用器,套接字復用器進行一定的處理,并會負責選擇利用那個執行隊列并將請求置入其中。當有一個請求進入執行隊列,就會有一個空閑的執行縣城從該隊列里面取走并向調用者返回結果。

(二)  執行隊列和執行線程的相關配置

執行線程數量有一定的限制,在服務器啟動的時候,就已經形成了一個含有一定數量執行線程的池,執行線程可能跨servletejbjdbc等,由于執行線程僅當程序成功結束或者出現異常才能被釋放繼續處理其他請求,所以如果執行線程執行的不夠快,而請求又多的情況下,就會造成執行隊列的阻塞。

相關的配置信息有:

server菜單configuration---〉高級配置---Config Execute Queues中的配置項如下:

1、Queue Length隊列長度,執行隊列的長度

2、Queue Length Threshold Percent 一個百分數,當request的數量達到隊列長度的這個比例的時候,weblogic會發出overflow的標志信息。

3、Thread Count 服務器初始創建的執行線程的數量

4、Thread Increase 如果weblogic發出overflow的標志信息,weblogic會嘗試增加這個數量的執行線程,以解決處理矛盾。

5、Threads Maximum最大執行線程數

6、Threads Minimum最小執行線程數

7、Thread Priority線程優先級

另外server菜單configuration---tuning子頁中還有一些相關的配置:

1、  Stuck Thread Max Time 黏聯線程時間,超過這個時間沒有返回的執行線程,系統將認為是黏聯線程。

2、  Stuck Thread Timer Interval 系統檢查黏聯線程的時間間隔

如果weblogic認為某個隊列中的所有的線程全部黏聯的話,weblogic將會增加執行線程的數量。

注意:執行線程的數量一旦增加,目前weblogic不會去減少他,如果增加了一些線程以后再次出現overflow的警告,weblogic會繼續增加執行線程的數量,一直到達到上限為止。

(三)  套接字復用器的相關配置

Weblogic帶有兩個版本的套接字復用器,純java版和本地接口版(jni),一般來說在訪問量小的情況下,java版比jni版性能要好一些,因為jniAPI調用會損失一部分性能,但是訪問量大的情況,一般都是jni版的性能比較好,所以盡量保證weblogic實用本地接口版的套接字復用器

相關的配置參數有兩個,在server菜單configuration---tuning子頁中的第一個和第二個配置項。

Enable Native IO :啟用本地IO,勾選這個配置以后,weblogic就會啟用本地接口版的套接字復用器

Socket Readers :如果不選上一個選項,則這個選項可用,也就是說java版的套接字復用器會被啟用,并且,java版的復用器會從執行線程中抽出這個比例的線程用于處理socket的請求。