<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java-Android-jwebee
    Java-Android-jwebee
    對(duì)IT人來說,要成為一個(gè)優(yōu)秀的技術(shù)型管理者,除了需要具備扎實(shí)的技術(shù)基礎(chǔ)之外,還應(yīng)該培養(yǎng)良好的人際關(guān)系能力、談判與溝通技能、客戶關(guān)系與咨詢技能、商業(yè)頭腦和財(cái)務(wù)技能以及創(chuàng)新意識(shí),此外還要有巧妙的激勵(lì)技巧和化解沖突與解決突發(fā)問題的能力.
    優(yōu)化 WebLogic 服務(wù)器性能參數(shù)
    WebLogic 配置文件(config.xml)包含了大量很直觀的與性能有關(guān)的參數(shù),能通過配置環(huán)境與應(yīng)用程序得到很好的優(yōu)化。基于系統(tǒng)的需要調(diào)整這些參數(shù)不僅能改善單個(gè)點(diǎn)的性能,而且能提高整個(gè)應(yīng)用程序性能的可衡量性。
    試著采用下列WebLogic配置方法,或許能使你的系統(tǒng)達(dá)到最佳狀態(tài):
    一 修改運(yùn)行隊(duì)列線程數(shù)的值。在WebLogic 中隊(duì)列元素的線程數(shù)等于同時(shí)占用運(yùn)行隊(duì)列的應(yīng)用程序的數(shù)目。當(dāng)任務(wù)加入一個(gè)WebLogic 實(shí)例,它就被放到執(zhí)行隊(duì)列中,然后分配給任務(wù)一個(gè)線程來運(yùn)行。線程消耗資源,因此要小心處理這個(gè)屬性——增加不需要的值,會(huì)降低性能。
    二,如果可能,使用自帶的性能包(NativeIOEnabled=true)。
    三,使用特定的應(yīng)用程序執(zhí)行隊(duì)列。
    四,使用JDBC連接池時(shí),修改下列屬性:
    n???????? 驅(qū)動(dòng)名稱:使用小的驅(qū)動(dòng)或者jDriver。
    n???????? 初始容量:設(shè)為與最大容量相同的值。
    n???????? 最大容量:其值至少應(yīng)與線程數(shù)相同。
    五,把連接池的大小設(shè)為與執(zhí)行隊(duì)列的線程數(shù)相同。
    六,設(shè)置緩沖。
    七,為Servlet和JSP使用多個(gè)執(zhí)行隊(duì)列。
    八,改變JSP默認(rèn)的Java編譯器,javac 比jikes或sj要慢。
    ?
    優(yōu)化 WebLogic
    提要:
    n ???????? WebLogic 啟動(dòng)設(shè)置 Java 參數(shù)。
    n ???????? 設(shè)置與性能有關(guān)的配置參數(shù)。
    n ???????? 調(diào)整開發(fā)與產(chǎn)品模式默認(rèn)值。
    n ???????? 使用 WebLogic “自有的 IO ”性能包。
    n ???????? 優(yōu)化默認(rèn)執(zhí)行隊(duì)列線程。
    n ???????? 優(yōu)化連接緩存。
    n ???????? 如何提高 JDBC 連接池的性能。
    n ???????? 設(shè)置 Java 編譯器。
    n ???????? 使用 WebLogic 集群提高性能。
    n ???????? 監(jiān)視 WebLogic 域。
    一、為 WebLogic 啟動(dòng)設(shè)置 Java 參數(shù)
    只要啟動(dòng) WebLogic ,就必須指定 Java 參數(shù),簡(jiǎn)單來說,通過 WebLogic.Server 域的命令行就可以完成,不過,由于這樣啟動(dòng)的過程冗長(zhǎng)并且易于出錯(cuò), BEA 公司推薦你把這個(gè)命令寫進(jìn)腳本里。為了簡(jiǎn)化這個(gè)過程,你可以修改樣例腳本里的默認(rèn)值,樣例腳本是提供 WebLogic 啟動(dòng)服務(wù)器的。
    如果你用配置向?qū)?chuàng)建你的域, WebLogic 啟動(dòng)腳本( startWebLogic.cmd )放在 domain-name 目錄里。默認(rèn)情況下,這個(gè)目錄是 BEA_HOME\user_projects\domain\domain-name BEA_HOME 表示安裝路徑, domain-name 是在配置模板中設(shè)置的域名稱。
    你需要在這個(gè)腳本中修改一些默認(rèn)的 Java 參數(shù)值,使之適合你的應(yīng)用環(huán)境和程序。在這個(gè)文件中主要的性能參數(shù)是 JAVA_HOME Java 堆的大小。
    n ???????? 設(shè) JAVA_HOME 的值為 JDK 所在的位置,如:
    set JAVA_HOME=C:\bea\jdk141_03
    n ???????? 為得到高性能的吞吐量,把 Java 堆的最小值與最大值設(shè)為相等。如:
    "%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m -classpath %CLASSPATH% -
    二、設(shè)置與性能有關(guān)的配置參數(shù)
    在一個(gè) WebLogic 域中,配置文件( config.xml )位于與管理服務(wù)器通信的機(jī)器里,提供 WebLogic MBean 的長(zhǎng)期存儲(chǔ)。管理服務(wù)器作為連接的中心點(diǎn),為服務(wù)實(shí)例與系統(tǒng)管理工具提供服務(wù)。域也可以包括其他的 WebLogic 實(shí)例,稱之為從服務(wù),主要為應(yīng)用程序提供服務(wù)。
    當(dāng)啟動(dòng)管理服務(wù)器是,首先讀域配置文件,然后跳過建立在配置文件中管理 MBean 默認(rèn)的屬性值,每一次用系統(tǒng)管理工具(不管是命令行界面還是管理控制臺(tái))改變一個(gè)屬性值,它都會(huì)被存到相應(yīng)的管理 MBean ,并且寫進(jìn)配置文件。
    下表列出了 config.xml 文件中影響服務(wù)器性能的參數(shù)。
    元素
    屬性
    控制臺(tái)標(biāo)簽
    備注
    Server
    NativeIOEnabled
    Native IO Enabled
    ?
    ExecuteQueue
    ThreadCount
    Thread Count
    ?
    ExecuteQueue
    QueueLength
    QueueLengthThresholdPercent
    ThreadsIncrease
    ThreadsMaximum
    ThreadPriority
    Queue Length
    Queue Length Threshold Percent
    (隊(duì)列長(zhǎng)限度百分比)
    Threads Increase
    Threads Maximum
    Thread Priority
    ?
    Server
    StuckThreadMaxTime
    StuckThreadTimerInteral
    Stuck Thread Max Time
    (堵塞線程的最長(zhǎng)時(shí)間)
    Stuck Thread Timer Interval
    (堵塞線程的時(shí)間間隔)
    ?
    Server
    ThreadPoolPercentSocketReaders
    Socket Readers
    ?
    Server
    AcceptBacklog
    Accept Backlog
    (接受緩存數(shù))
    ?
    JDBCConnectionPool
    InitialCapacity
    MaxCapacity
    Initial Capacity
    Max Capacity
    ?
    JDBCConnectionPool
    StatementCacheSize
    Statement Cache Size
    (聲明高速緩沖大小)
    ?
    ?
    三、調(diào)整開發(fā)模式與產(chǎn)品模式默認(rèn)值
    你可以指定域?yàn)殚_發(fā)環(huán)境或?yàn)楫a(chǎn)品環(huán)境。 WebLogic 會(huì)根據(jù)你指定的環(huán)境類型使用不同的默認(rèn)值提供不同的服務(wù)。
    下表列出了兩種模式下的默認(rèn)值
    優(yōu)化參數(shù)
    開發(fā)模式
    產(chǎn)品模式
    Execute Queue: ThreadCount
    15 threads
    25 threads
    JDBC Connection Pool: MaxCapacity
    15 connections
    25 connections
    3 1 更改運(yùn)行時(shí)模式
    在創(chuàng)建了一個(gè)域后,按下列步驟可以更改域里所有服務(wù)的的運(yùn)行時(shí)模式:
    ?
    1 .為更改運(yùn)行在一個(gè) WebLogic 主機(jī)上的所有域的運(yùn)行時(shí)模式,用文本編輯器打開 WL_HOME\common\bin\commEnv.cmd(Windows) 或者 WL_HOME\common\bin\commEnv.sh (UNIX) WL_HOME 是安裝 WebLogic 的路徑。
    為指定的域更改運(yùn)行時(shí)模式,就用文本編輯器打開 domain-name \StartWebLogic.cmd (Windows) or domain-name\StartWebLogic.sh (UNIX) domain-name 為創(chuàng)建的域的目錄。
    2 .在這個(gè)腳本中,更改 PRODUCTION_MODE 的值,如果你要服務(wù)器運(yùn)行在產(chǎn)品模式,指定其值為 TRUE
    3 .重啟所有的服務(wù)器。
    3 2 兩種模式的不同
    下表列出了開發(fā)模式與產(chǎn)品模式幾種關(guān)鍵項(xiàng)的區(qū)別:
    功用名稱
    開發(fā)模式
    產(chǎn)品模式
    SSL
    你可以使用 WebLogic 安全服務(wù)提供的驗(yàn)證數(shù)字證書。有這些證書,你開發(fā)的應(yīng)用程序會(huì)在 SSL 保護(hù)的環(huán)境下運(yùn)行。
    如果你使用驗(yàn)證數(shù)字證書,會(huì)收到警告信息。
    部署應(yīng)用程序
    WEBLOGIC 實(shí)例會(huì)自動(dòng)部署和更新位于 domain_name/applications 目錄下的應(yīng)用程序( domain_name 為域的名稱)。
    不能使用自動(dòng)部署功能,必須使用 WebLogic 控制臺(tái)或者 WebLogiceblogic Deployer 工具。
    Log File Rotation
    啟動(dòng)服務(wù)器后,服務(wù)器自動(dòng)重命名本地日志文件為 server-name.log.n ,為了滯留的 session ,只要日志文件的達(dá)到 500kb ,日志文件就會(huì)滾轉(zhuǎn)一次。
    當(dāng)日志文件達(dá)到 500kb ,就會(huì)滾轉(zhuǎn)。
    Execute Queues
    默認(rèn)的執(zhí)行線程為 15
    ?
    默認(rèn)的執(zhí)行線程為 25
    JDBC Connection Pool Capacity
    默認(rèn)的容量為 15
    默認(rèn)的容量為 25
    四、使用WebLogic“自有的IO”性能包
    當(dāng)你使用自有的性能包,測(cè)試基準(zhǔn)就表明了主要性能的提高。性能包采用最優(yōu)化的平臺(tái)及多線程的 Socket 去提高服務(wù)器的性能。例如,本地 Socket 讀的多線程有自己的執(zhí)行隊(duì)列而不需要借用默認(rèn)的執(zhí)行隊(duì)列線程,這樣可以讓默認(rèn)執(zhí)行線程很從容去處理應(yīng)用程序。
    不過,如果你一定要用純 Java socket 讀在主機(jī)上運(yùn)行,你仍然可以通過配置每個(gè)服務(wù)器實(shí)例和客戶機(jī)中適當(dāng)?shù)?/span> socket 讀的線程數(shù)量,來提高 socket 通信的性能。
    設(shè)置性能包的操作方法:
    默認(rèn)情況下,裝載在 config.xml 中的是自有的性能包。為了驗(yàn)證這個(gè)設(shè)置,在配置文件中檢查 NativeIOEnabled 屬性是否設(shè)為“ true ”( NativeIOEnabled=true )。
    你也可以通過管理控制臺(tái)來驗(yàn)證,步驟如下:
    1 ??? 啟動(dòng)管理服務(wù)器。
    2 ??? 訪問管理控制臺(tái)。
    3 ??? 展開左邊面板的 Servers 節(jié)點(diǎn),顯示域服務(wù)。
    4 ??? 點(diǎn)擊你要配置的服務(wù)實(shí)例。
    5 ??? 選擇 Configuration >Tuning tab
    6 ??? 如果 Enable Native IO 復(fù)選框沒有被選擇,選中即可。
    7 ??? 點(diǎn)擊 Apply
    8 ??? 重啟服務(wù)器。
    ?
    ?
    五、優(yōu)化默認(rèn)執(zhí)行隊(duì)列線程
    默認(rèn)情況下,一個(gè)新的 WebLogic 實(shí)例配置了一個(gè)開發(fā)模式執(zhí)行隊(duì)列, weblogic.kernel.default, 它包含 15 個(gè)線程。另外, WebLogic 提供了 2 個(gè)預(yù)配置隊(duì)列:
    n?????? weblogic.admin.HTTP——只在管理服務(wù)器上才有,這個(gè)隊(duì)列供與管理控制臺(tái)的通信用,你不能再配置它。
    n?????? weblogic.admin.RMI——管理服務(wù)器和被管理服務(wù)器上都有這個(gè)隊(duì)列,它是供管理的交通之用,也不能再配置它。
    如果你不配置額外的執(zhí)行隊(duì)列,并且指定應(yīng)用給這些隊(duì)列, web 應(yīng)用程序和 RMI 對(duì)象就使用默認(rèn)的隊(duì)列 weblogic.kernel.default
    注意;如果自帶的執(zhí)行包沒有在你的平臺(tái)上使用,你可能需要調(diào)整默認(rèn)的執(zhí)行隊(duì)列線程數(shù)和擔(dān)任 socket 讀的線程的百分比,去實(shí)現(xiàn)最佳性能。
    5 1 你應(yīng)該更改默認(rèn)的線程數(shù)嗎 ?
    增加更多的線程到默認(rèn)的執(zhí)行隊(duì)列并不意味著你能處理更多的工作。即使增加更多的線程,仍然被處理器的能力限制。因?yàn)榫€程消耗內(nèi)存,所以增加線程數(shù)屬性的值不必要的降低了性能。一個(gè)高的執(zhí)行線程數(shù)導(dǎo)致更多的內(nèi)存被占用并且增加了上下文轉(zhuǎn)換程序,它也會(huì)降低性能。
    線程數(shù)屬性的值與應(yīng)用程序處理的工作的類型關(guān)系密切。例如,如果你的客戶應(yīng)用程序比較小,通過遠(yuǎn)程調(diào)用處理的工作較多,這樣,客戶端會(huì)花費(fèi)更多的時(shí)間連接,因此,與能完成大量客戶端任務(wù)的客戶應(yīng)用程序相比,會(huì)需要更多的線程數(shù)。
    如果你的工作不需要使用超過15個(gè)線程(開發(fā)模式默認(rèn))或者25個(gè)線程(產(chǎn)品模式默認(rèn)),就不要改變這個(gè)屬性的值。通常,如果你的應(yīng)用程序訪問數(shù)據(jù)庫花很長(zhǎng)時(shí)間才返回結(jié)果,與訪問數(shù)據(jù)庫很短時(shí)間就返回的應(yīng)用程序比較,你會(huì)需要更多的執(zhí)行線程。從后者來看,用少點(diǎn)的線程數(shù)可能提高性能。
    5 2 需要修改默認(rèn)線程數(shù)的情形
    為了給執(zhí)行隊(duì)列決定一個(gè)理想的線程數(shù),當(dāng)隊(duì)列中所有應(yīng)用程序都運(yùn)行在最大負(fù)荷的情況下,監(jiān)視隊(duì)列的吞吐量。增加線程數(shù),重復(fù)負(fù)載測(cè)試,直到達(dá)到最佳的吞吐量。(在某些情況下,增加線程數(shù)將產(chǎn)生足夠多的上下文轉(zhuǎn)換程序,使得隊(duì)列中的吞吐量開始減少。)
    注意: WebLogic 管理控制臺(tái)顯示的是所有服務(wù)器執(zhí)行隊(duì)列累積的吞吐量。為了得到這個(gè)值,后面將會(huì)介紹。
    下表列出了在WebLogic 域中調(diào)整的線程及與CPU數(shù)量相關(guān)的情形,這些情況也假定WebLogic運(yùn)行在最大負(fù)荷下,并且使用默認(rèn)的執(zhí)行隊(duì)列滿足所有的線程的請(qǐng)求。如果你配置了額外的執(zhí)行隊(duì)列并指派了應(yīng)用程序到具體的隊(duì)列,就需要依據(jù)一個(gè)個(gè)連接池得到結(jié)果。
    如果…
    結(jié)果
    應(yīng)該:
    線程數(shù)<CPU的數(shù)量
    線程數(shù)太少,如果:
    CPU 正等著工作,但有工作被完成。
    CPU 利用率不能達(dá)到100%。
    增加線程數(shù)。
    線程數(shù)=CPU的數(shù)量
    理論上理想,但是CPU仍然低利用。
    增加線程數(shù)。
    線程數(shù)(適當(dāng)?shù)模?gt;CPU的數(shù)量
    實(shí)際中理想,有個(gè)適當(dāng)?shù)纳舷挛霓D(zhuǎn)換程序數(shù)量和高的CPU利用率。
    調(diào)整適當(dāng)?shù)木€程數(shù)并且比較性能結(jié)果。
    線程數(shù)(較大的)>CPU的數(shù)量
    過多的上下文轉(zhuǎn)換程序,能導(dǎo)致重大的性能降級(jí)。
    當(dāng)你降低線程數(shù)時(shí),性能可以增強(qiáng)。
    減少線程數(shù),使它等于CPU的數(shù)量,然后僅僅增加已經(jīng)得出的“堵塞”線程的數(shù)量。
    例如,如果你有4個(gè)處理器,它們都同時(shí)運(yùn)行,并出現(xiàn)堵塞線程,于是,你想要的執(zhí)行線程就是4+堵塞線程的數(shù)
    5 3 修改默認(rèn)線程數(shù)的步驟
    用管理控制臺(tái)修改默認(rèn)執(zhí)行隊(duì)列線程數(shù)如下:
    1.??? 如果管理服務(wù)器沒有運(yùn)行,先啟動(dòng)。
    2.??? 訪問管理控制臺(tái)。
    3.??? 展開左邊面板的Servers 節(jié)點(diǎn),顯示域服務(wù)。
    4.??? 右擊服務(wù)名稱,在彈出菜單中選擇View Execute Queues ,就會(huì)在右邊面板顯示有執(zhí)行隊(duì)列的表用來修改。
    注意:你只能修改默認(rèn)的執(zhí)行隊(duì)列或者用戶定義的執(zhí)行隊(duì)列。
    5.??? 在Name列,直接點(diǎn)擊默認(rèn)執(zhí)行隊(duì)列名稱,顯示配置標(biāo)簽用來修改執(zhí)行隊(duì)列數(shù)。
    6.??? 填下適當(dāng)?shù)木€程數(shù)。
    7.??? 點(diǎn)擊Apply,保存剛才的修改。
    8.??? 重啟服務(wù)器,使新的執(zhí)行隊(duì)列設(shè)置生效。
    ?
    5 4 指派應(yīng)用程序到執(zhí)行隊(duì)列
    雖然可以配置默認(rèn)的執(zhí)行隊(duì)列,為所有的 WebLogic 應(yīng)用程序提供最佳的線程數(shù),但是為關(guān)鍵的應(yīng)用程序配置多個(gè)執(zhí)行隊(duì)列可以提供更多的管理控制。通過使用多執(zhí)行隊(duì)列,你可以保證應(yīng)用程序有權(quán)占用固定的線程數(shù),而不管 WebLogic 服務(wù)器有多大的負(fù)荷。
    5 5 創(chuàng)建執(zhí)行隊(duì)列
    一個(gè)執(zhí)行隊(duì)列代表執(zhí)行線程的命名集,線程指向一個(gè)或多個(gè) Servlet JSP EJB RMI 對(duì)象。執(zhí)行隊(duì)列在 config.xml 文件中描述,作為服務(wù)器元素的一部分。如,在 config.xml 文件中描述一個(gè)有 4 個(gè)線程的隊(duì)列,命名為 CriticalAppQueue ,如下:
    ...
    <Server
    Name="examplesServer"
    ListenPort="7001"
    NativeIOEnabled="true"/>
    <ExecuteQueue Name="default"?
    ThreadCount="15"/>
    <ExecuteQueue Name="CriticalAppQueue" ?
    ThreadCount="4"/>
    ?...
    </Server>
    另一種創(chuàng)建隊(duì)列的方法是通過管理控制臺(tái),配置步驟如下:
    1 ??? 啟動(dòng)管理服務(wù)器,訪問控制臺(tái)。
    2 ??? 展開左邊面板中 Servers 節(jié)點(diǎn),顯示域中要配置的服務(wù)。
    3 ??? 右擊你要增加隊(duì)列的服務(wù)實(shí)例,從彈出菜單中選擇 View Execute Queues
    4 ??? 在隊(duì)列配置標(biāo)簽中,點(diǎn)擊配置新執(zhí)行隊(duì)列鏈接。
    5 ??? 在隊(duì)列配置標(biāo)簽中,更改下列屬性或接受系統(tǒng)的默認(rèn)值:
    n ???????? 線程名稱( Name ):你可以輸入線程名稱,如 CriticalAppQueue
    n ???????? 隊(duì)列長(zhǎng)度 (Queue Length) :通常保留默認(rèn)值 65536 ,隊(duì)列長(zhǎng)度表明了同時(shí)發(fā)來請(qǐng)求的最大數(shù), 65536 個(gè)請(qǐng)求是個(gè)很大的數(shù),即使達(dá)到這個(gè)最大數(shù),也是很少見的。
    如果達(dá)到最大隊(duì)列長(zhǎng)度, WebLogic 會(huì)自動(dòng)成倍增長(zhǎng)隊(duì)列大小,以處理額外的工作。
    注意:超過 65536 個(gè)請(qǐng)求預(yù)示隊(duì)列中的線程有問題,不僅僅只是隊(duì)列本身的長(zhǎng)度問題,實(shí)踐表明在隊(duì)列中有堵塞線程或線程數(shù)不足的情況存在。
    n ???????? 隊(duì)列長(zhǎng)限制百分比( Queue Length Threshold Percent ):達(dá)到隊(duì)列長(zhǎng)度百分比( 1 99 )時(shí),就構(gòu)成了溢出條件的產(chǎn)生。實(shí)際隊(duì)列大小在限制的百分比之下時(shí)才被認(rèn)為是正常的;在限制百分比之上就會(huì)產(chǎn)生溢出。當(dāng)出現(xiàn)溢出, WebLogic 日志就會(huì)產(chǎn)生一個(gè)錯(cuò)誤消息,并且按線程數(shù)增量( Threads Increase )屬性的值增加線程數(shù),以幫助減少負(fù)載量。
    默認(rèn)的隊(duì)列長(zhǎng)限制百分比為 90 %。一般情況下,應(yīng)保留 90 %或其左右,以應(yīng)對(duì)一些潛在的情況,使得有額外的線程可以去處理一些請(qǐng)求中的異常。記住,隊(duì)列長(zhǎng)度限制百分比不是一定作為自動(dòng)優(yōu)化參數(shù)――因?yàn)檎_\(yùn)作情況下,這個(gè)限度從不會(huì)被觸發(fā)。
    n ???????? 線程數(shù)( Tread Count ):指派到這個(gè)隊(duì)列的線程數(shù)。如果你不需要使用超過 15 個(gè)線程(默認(rèn)),就不必更改這個(gè)屬性值。
    ?
    n ???????? 線程數(shù)增量( Threads Increase ):是指 WebLogic 探測(cè)到有溢出時(shí),增加到執(zhí)行隊(duì)列的線程數(shù)。當(dāng)你指定為 0 (默認(rèn)),出現(xiàn)溢出時(shí), WebLogic 會(huì)把運(yùn)行良好狀態(tài)改為“警告”,而且也不會(huì)指派額外的線程去減少負(fù)荷量。
    ?
    注意:如果 WebLogic 實(shí)例的線程數(shù)響應(yīng)了溢出,那么這些額外的線程就會(huì)滯留在執(zhí)行隊(duì)列,直到服務(wù)器重啟。監(jiān)視錯(cuò)誤日志,以判斷溢出產(chǎn)生的原因,以便根據(jù)需要重配置線程數(shù),防止以后類似情況產(chǎn)生。不要同時(shí)使用線程數(shù)增量和隊(duì)列長(zhǎng)限制百分比作為自動(dòng)優(yōu)化的手段。如此做通常結(jié)果會(huì)產(chǎn)生比正常需要還多的線程被指派到執(zhí)行隊(duì)列,這樣上下文轉(zhuǎn)化程序的增多會(huì)使服務(wù)器遭受很差的性能。
    ?
    n ???????? 最大線程數(shù):是指執(zhí)行隊(duì)列中能運(yùn)行的,這個(gè)值保護(hù) WebLogic 為了響應(yīng)頻繁溢出,創(chuàng)建過多的線程數(shù)。默認(rèn)情況下,最大線程數(shù)為 400
    n ???????? 線程優(yōu)先級(jí):線程優(yōu)先級(jí)與此隊(duì)列相關(guān)。默認(rèn)值為 5
    ?
    6 ??? 點(diǎn)擊 Create ,創(chuàng)建隊(duì)列。
    7 ??? 重啟服務(wù)器。
    5 6 指派 Servlet JSP 到執(zhí)行隊(duì)列
    你可以把 servlet JSP 分配到指定的配置執(zhí)行隊(duì)列,只需在初始參數(shù)中標(biāo)識(shí)執(zhí)行隊(duì)列的名稱。初始參數(shù)出現(xiàn)在 Servert JSP 的部署描述文件 web.xml 中的 init-param 元素里。為了分配一個(gè)隊(duì)列,可以把隊(duì)列名作為 wl-dispatch-policy 參數(shù)的值。如:
    <servlet>

    ???<servlet-name>MainServlet</servlet-name>

    ???<jsp-file>/myapplication/critical.jsp</jsp-file>

    ???<init-param>

    ??????<param-name>wl-dispatch-policy</param-name>

    ??????<param-value>CriticalAppQueue</param-value>

    ???</init-param>

    </servlet>
    5 7 指派 EJB RMI 對(duì)象到執(zhí)行隊(duì)列
    為了把 EJB 分配到指定的隊(duì)列,可以使用 weblogic-ejb-jar.xml 文件中 dispatch-policy 元素。
    然而你也可以通過使用 appc 編譯器 dispatchPolicy 選項(xiàng)來設(shè)置派遣策略, BEA 強(qiáng)烈推薦使用部署描述元素。因?yàn)橛眠@種方式,如果 EJB 重編譯,在部署用例期間,這個(gè)設(shè)置不會(huì)被丟失。
    為了把 RMI 對(duì)象分配到指定的隊(duì)列,可以使用 rmic 編譯器的- dispatchPolicy 選項(xiàng),如:
    java weblogic.rmic -dispatchPolicy CriticalAppQueue ...
    ?
    5 8 分配執(zhí)行隊(duì)列擔(dān)任 Socket
    為了獲得更好的 socket 性能, BEA 推薦你使用自有的 socket 讀執(zhí)行工具,它更優(yōu)于純 Java 執(zhí)行工具。然而,如果你一定要在主機(jī)上用純 Java socket 讀,你仍然可以通過配置恰當(dāng)?shù)膱?zhí)行線程數(shù)以提高 socket 通信性能,為每個(gè)服務(wù)器實(shí)例和客戶機(jī)器擔(dān)負(fù) socket 讀線程的任務(wù)。
    Socket 讀占線程池百分比( ThreadPoolPercentSocketReader )屬性可以設(shè)置用來從 socket 讀消息的執(zhí)行線程的最大百分比。這個(gè)屬性的最優(yōu)值是根據(jù)應(yīng)用程序的需要指定的。默認(rèn)值是 33 ,有效范圍在 1 99 之間。
    分配執(zhí)行線程擔(dān)任 socket 讀增加了服務(wù)器處理速度和接受客戶請(qǐng)求的能力。有必要平衡執(zhí)行線程數(shù),使其專注于從 socket 讀消息,也有必要平衡那些在服務(wù)器處理實(shí)際任務(wù)的執(zhí)行線程。
    5 9 為服務(wù)器實(shí)例設(shè)置 socket 讀的線程數(shù)的操作
    1 ??? 啟動(dòng)管理服務(wù)器,訪問域控制臺(tái)。
    2 ??? 展開左邊面板 Servers 節(jié)點(diǎn),顯示域服務(wù)配置。
    3 ??? 點(diǎn)擊你要配置的服務(wù)名稱。
    4 ??? 選擇配置( Configuration )―― > 調(diào)整( Tuning )標(biāo)簽。
    5 ??? Socket Reader 中編輯 Java 讀線程的百分比。 Java socket 讀線程數(shù)是根據(jù)所有的執(zhí)行線程數(shù)的百分比計(jì)算得到的。
    6 ??? 應(yīng)用( Apply )這個(gè)調(diào)整。
    ?
    5 10 在客戶機(jī)設(shè)置 Socket 讀線程數(shù)
    在客戶機(jī)上,你可以配置運(yùn)行在 JVM Java 虛擬機(jī))上的 socket 讀線程數(shù)。指定 Socket 讀,需要通過用 java 命令行定義下列參數(shù):
    -Dweblogic.ThreadPoolSize=value
    -Dweblogic.ThreadPoolPercentSocketReaders=value
    5 11 優(yōu)化溢出情況時(shí)的執(zhí)行隊(duì)列
    你可以配置 WEBLOGIC 監(jiān)測(cè)并且隨時(shí)應(yīng)對(duì)潛在的溢出,不管其發(fā)生在默認(rèn)的執(zhí)行隊(duì)列還是用戶定義的隊(duì)列。一旦當(dāng)前隊(duì)列大小快達(dá)到用戶定義的百分比, WebLogic 認(rèn)為隊(duì)列中有一個(gè)可能的溢出產(chǎn)生。
    當(dāng)這個(gè)限度到達(dá)時(shí),服務(wù)器改變它的良好狀態(tài)為“警告”,隨即分配額外的線程去處理超負(fù)荷的工作,從而還原它的大小。
    為了自動(dòng)監(jiān)測(cè)和應(yīng)對(duì)溢出,你可以配置以下項(xiàng):
    1 ??? 隊(duì)列長(zhǎng)限制百分比,這個(gè)值是隊(duì)列大小的百分比。
    2 ??? 當(dāng)溢出發(fā)生時(shí),增加到隊(duì)列的線程數(shù)。這些額外的線程以還原隊(duì)列到正常的運(yùn)行的大小。
    3 ??? 線程的最大數(shù),在特殊情況下,線程最大數(shù)用來保護(hù)服務(wù)器在響應(yīng)過載情況下過度分配線程數(shù)。
    5 12 優(yōu)化執(zhí)行隊(duì)列的監(jiān)測(cè)行為
    當(dāng)一個(gè)線程在隊(duì)列中變成堵塞狀態(tài)時(shí), WebLogic 會(huì)自動(dòng)監(jiān)測(cè)到。因?yàn)槎氯€程不能完成它當(dāng)前的工作或接受新的工作,服務(wù)器每次診斷一個(gè)堵塞線程,就記入一個(gè)消息到日志中。如果一個(gè)隊(duì)列中所有的線程變成堵塞,服務(wù)器改變良好狀態(tài)成“警告”或者“危機(jī)”,依賴于下列情況:
    n ???????? 如果默認(rèn)隊(duì)列中所有的線程變成堵塞,服務(wù)器狀態(tài)變成“危機(jī)”。(你可以設(shè)立節(jié)點(diǎn)管理器( Node Manager )應(yīng)用去自動(dòng)關(guān)閉及重啟服務(wù)器。)
    n ???????? 如果在 weblogic.admin.HTTP, weblogic.admin.RMI 或用戶定義的隊(duì)列中所有線程變成堵塞,服務(wù)器狀態(tài)變成“警告”。
    WebLogic 診斷到一個(gè)堵塞線程,如果它是在指定的時(shí)間內(nèi)連續(xù)不斷的工作(沒有空閑)。你可以調(diào)整服務(wù)器線程監(jiān)測(cè)行為,它是通過改變堵塞線程被診斷前的時(shí)間長(zhǎng)度和服務(wù)器核查堵塞線程的頻率。
    注意:盡管你能改變標(biāo)準(zhǔn) WebLogic 去決定一個(gè)線程是否堵塞,但,你不能改變默認(rèn)行為,就是出現(xiàn)堵塞時(shí)把服務(wù)器設(shè)置成“警告”或“危機(jī)”的行為。
    配置 WebLogic 堵塞線程監(jiān)測(cè)行為的步驟:
    1 ??? 啟動(dòng) WebLogic ,訪問管理控制臺(tái)。
    2 ??? 點(diǎn)擊你想為改善堵塞線監(jiān)測(cè)而修改的服務(wù)器實(shí)例的名稱。
    3 ??? 選擇配置( Configuration )―― > 調(diào)整( Tuning )標(biāo)簽。
    4 ??? 修改下列參數(shù):
    ?
    n ???????? 堵塞線程最大時(shí)間( Stuck Thread Max Time ):輸入秒數(shù),線程一定是不斷的運(yùn)行,服務(wù)器才會(huì)診斷這個(gè)線程作為堵塞。默認(rèn)情況下, WebLogic 認(rèn)為線程連續(xù)不斷運(yùn)行 600 秒后置為堵塞。
    n ???????? 堵塞線程時(shí)間間隔( Stuck Thread Timer Interval ):輸入秒數(shù),這個(gè)時(shí)間是 WebLogic 周期性的掃描線程以察覺它們是否連續(xù)不斷運(yùn)行了某一線程的時(shí)間達(dá)到通過堵塞線程最大時(shí)間屬性指定的時(shí)間長(zhǎng)度。默認(rèn)時(shí)間間隔為 600 秒。
    5 ??? 應(yīng)用( Apply )設(shè)置。
    6 ??? 重啟服務(wù)器。
    六、優(yōu)化連接緩存
    Config.xml 文件中的元素接受緩存數(shù)( AcceptBacklog )屬性是用來設(shè)定請(qǐng)求 WebLogic 實(shí)例的連接數(shù),在拒絕額外的請(qǐng)求之前,能接受設(shè)定的緩存數(shù)。 AcceptBacklog 屬性指定有多少 TCP 連接緩存在等待隊(duì)列,這個(gè)固定的隊(duì)列存放了 TCP 堆棧已經(jīng)收到但應(yīng)用程序還沒有收到的連接請(qǐng)求。默認(rèn)值是 50 ,最大值由操作系統(tǒng)決定。
    在控制臺(tái)調(diào)整接受緩存數(shù)的步驟:
    1. ??? 啟動(dòng) WebLogic ,訪問控制臺(tái)。
    2. ??? 展開左邊面板 Servers 節(jié)點(diǎn)。
    3. ??? 點(diǎn)擊你要配置的服務(wù)器實(shí)例的名稱。
    4. ??? 選擇配置( Configuration )―― > 調(diào)整( Tuning )標(biāo)簽。
    5. ??? 根據(jù)需要修改默認(rèn)的接受緩存數(shù)( Accept Backlog ):
    n ???????? 在運(yùn)行期間,如果許多客戶端連接得不到響應(yīng)或被拒絕,并且服務(wù)器端也沒有錯(cuò)誤消息,說明接受緩存的值可能太小。
    n ???????? 在你訪問 WebLogic 時(shí),如果收到“拒絕連接( connection refused )”的提示,則應(yīng)該增加接受緩存的默認(rèn)值的 25 %。繼續(xù)增加其值的 25 %,直到停止出現(xiàn)這樣的提示。
    6. ??? 點(diǎn)擊應(yīng)用( Apply ),保存設(shè)置。
    ?
    七、如何提高 JDBC 連接池的性能
    創(chuàng)建一個(gè)帶 DBMS JDBC 連接是非常慢的。如果應(yīng)用程序需要數(shù)據(jù)庫不斷的連接和斷開,這種創(chuàng)建方式會(huì)造成一個(gè)重大的性能問題。 WebLogic 連接池提供了一種高效的解決方案來解決這個(gè)問題。
    當(dāng)啟動(dòng) WebLogic ,就打開連接池,以便于所有客戶連接。當(dāng)一個(gè)客戶關(guān)閉一個(gè)連接,這個(gè)連接就返回到連接池,供其他的客戶使用。連接本身不會(huì)關(guān)閉。如此就用極少的代價(jià)實(shí)現(xiàn)了連接和斷開連接池。
    在連接池里應(yīng)該創(chuàng)建多少連接呢?連接池會(huì)根據(jù)配置參數(shù)中的最大數(shù)與最小數(shù)之間增加或減少連接。最好的性能應(yīng)該是連接數(shù)與當(dāng)前客戶會(huì)話( Session )數(shù)相同。
    7 1 調(diào)整 JDBC 連接池的初始容量
    在配置連接池時(shí), JDBCConnectionPool 元素中的 InitialCapacity 屬性能設(shè)定連接數(shù),創(chuàng)建物理的數(shù)據(jù)庫連接。如果服務(wù)器不能創(chuàng)建這個(gè)連接數(shù),連接池的創(chuàng)建就會(huì)失敗。
    在開發(fā)期間,為了使服務(wù)器啟動(dòng)更快,可以很方便的設(shè)置 InitialCapacity 屬性的值小一點(diǎn)。在產(chǎn)品系統(tǒng)中,就應(yīng)該把 InitialCapacity 的值設(shè)為與 MaxCapacity 值相同,默認(rèn)產(chǎn)品模式的值為 25 。這樣,在服務(wù)器啟動(dòng)時(shí),所有的連接就會(huì)被創(chuàng)建。如果你調(diào)整了 MaxCapacity 值后,一定要確信 InitialCapacity 值設(shè)置與 MaxCapacity 值相同。
    如果 InitialCapacity MaxCapacity 值少,當(dāng)負(fù)荷增加時(shí),服務(wù)器需要?jiǎng)?chuàng)建額外的數(shù)據(jù)庫連接。當(dāng)服務(wù)器處于低負(fù)荷時(shí),所有的資源應(yīng)該是盡快的完成請(qǐng)求,而不是創(chuàng)建新的數(shù)據(jù)庫連接。
    7 2 調(diào)整 JDBC 連接池的最大容量
    JDBCConnectonPool 元素中的 MaxCapacity 屬性設(shè)置連接池包含的最大的物理數(shù)據(jù)庫連接數(shù)。不同的 JDBC 驅(qū)動(dòng)程序和數(shù)據(jù)庫服務(wù)器可能限制物理連接數(shù)。
    默認(rèn)的最大容量數(shù)與默認(rèn)的線程數(shù)相等:開發(fā)模式為 15 ,產(chǎn)品模式為 25 。不過,在產(chǎn)品模式下,建議連接數(shù)與當(dāng)前的客戶會(huì)話( Session )數(shù)相等。在服務(wù)器端,連接池的容量與執(zhí)行線程數(shù)是無關(guān)的,正在進(jìn)行的用戶會(huì)話比執(zhí)行線程更多。
    ?
    八、設(shè)置 Java 編譯器
    編譯 JSP Servlet 的標(biāo)準(zhǔn) Java 編譯器是 javac 。你可以把 java 編譯器設(shè)置為 si jikes 代替 javac ,這樣能極大的提高性能。下面討論設(shè)置步驟及其要考慮的事項(xiàng)。
    8 1 通過控制臺(tái)改變編譯器
    1. ??? 啟動(dòng)服務(wù)器,訪問控制臺(tái)。
    2. ??? 展開左邊面板 Servers 節(jié)點(diǎn)。
    3. ??? 點(diǎn)擊要配置的服務(wù)器實(shí)例的名稱。
    4. ??? 選擇配置( Configuration )―― > 常規(guī)( General ),在 Java Compiler 編輯框輸入編譯器的完全路徑。如: c:\visualcafe31\bin\sj.exe
    5. ??? 點(diǎn)擊高級(jí)選項(xiàng)( Advanced Option )―― >Show ,顯示其他的屬性。
    6. ??? 用添加( Append )把完全路徑通過 Classpath 框輸入到 JRE rt.jar 庫。如: BEA_HOME \jdk141_02\jre\lib\rt.jar
    7. ??? 點(diǎn)擊應(yīng)用。
    8. ??? 重啟服務(wù)器。
    8 2 Weblogic.xml 文件中設(shè)置編譯器
    n ???????? 使用 compileCommand 參數(shù)指定 Java 編譯器。
    n ???????? 使用 procompile 參數(shù)配置 WebLogic ,在啟動(dòng) WebLogic 時(shí)預(yù)編譯 JSP
    8 3 編譯 EJB 容器類
    使用 Weblogic.appc 的功能去編譯 EJB2.0 1.1 容器類。如果編譯 Jar 文件部署 EJB 容器,你必須使用 weblogic.appc 生成容器類。默認(rèn)情況下, EJB 使用 javac 編譯器。為了得到跟好的性能,使用- compiler 標(biāo)志指定不同的編譯器(如 Symantec 公司的 sj
    8 4 UNIX 環(huán)境下編譯
    UNIX 機(jī)器上編譯 JSP 文件,如果收到下列錯(cuò)誤消息:
    failed java.io.IOException:Not enough space
    試試下列一些或所有的解決方法:
    n ???????? 如果你只有 256MB 的內(nèi)存,增加更大的內(nèi)存。
    n ???????? 提高文件描述文件的限制,如:
    set rlim_fd_max=4096
    set rlim_fd_cur=1024
    n ???????? 啟動(dòng) JVM 時(shí),用- native 標(biāo)志來使用自有的線程。
    九、使用 WebLogic 集群提高性能
    WebLogic 集群是指一組 WebLogic 實(shí)例在一起提供具有防過載和自有復(fù)制的功能,以用一個(gè)域?yàn)樗锌蛻糁С挚缮炜s的高可用性運(yùn)行。集群對(duì)于客戶是一個(gè)單一的服務(wù)器,但實(shí)際上是一組服務(wù)器來提高可靠性和可伸縮性。
    9 1 可伸縮性和高的可用性
    可伸縮性是系統(tǒng)增加一個(gè)或更多部件作為系統(tǒng)資源的能力。很典型的是,這些部件使并發(fā)用戶得到支持,使并發(fā)事務(wù)能在特定的時(shí)間單位能被處理。
    假定應(yīng)用程序設(shè)計(jì)良好,它完全可以簡(jiǎn)單的增加更多的資源來提高性能。為了增加 WebLogic 處理的負(fù)荷量,只需增加一個(gè) WebLogic 實(shí)例到你的集群――不需改變應(yīng)用程序。集群提高兩個(gè)關(guān)鍵的好處:可伸縮性和可用性,這是單一服務(wù)器無法比擬的。
    WebLogic 集群給 J2EE 帶來了可伸縮性和高的可用性,而且對(duì)于應(yīng)用程序的開發(fā)者是透明的。可伸縮性擴(kuò)展了中間層的能力,超過了單一的 WebLogic 服務(wù)器或單一的計(jì)算機(jī)能處理的。集群成員唯一的限制是所有 WebLogic 必須要用 IP 多點(diǎn)傳送通信。新的 WebLogic 能動(dòng)態(tài)的增加到集群,以增加處理能力。
    WebLogic 集群保證高的可用性是通過多個(gè)服務(wù)器的冗余,減少客戶的請(qǐng)求失敗。集群中多個(gè)服務(wù)器能提供同一服務(wù)。如果一個(gè)服務(wù)器停止運(yùn)行,另一個(gè)能接替運(yùn)行。這種功能為客戶增加了可用性。
    警告:如果你要解決應(yīng)用程序和環(huán)境的頸瓶問題,增加額外的服務(wù)器到集群,應(yīng)該提供線性的可伸縮性。定基準(zhǔn)和初始配置測(cè)試運(yùn)行時(shí),在移到集群環(huán)境之前,應(yīng)把應(yīng)用隔離在單獨(dú)的服務(wù)器上測(cè)試。
    9 2 在多 CPU 機(jī)器上運(yùn)行多服務(wù)器實(shí)例,應(yīng)考慮的性能問題
    多處理器的機(jī)器上,必須考慮群集 WebLogic 實(shí)例數(shù)應(yīng)與 CPU 的數(shù)量成比例。因?yàn)?/span> WebLogic 沒有內(nèi)置限制的服務(wù)器實(shí)例數(shù)位于集群里,規(guī)模大的、多處理器服務(wù)器,如 Sun 公司的 Sun Enterprise 10000 ,有著當(dāng)作非常大的集群或多集群主機(jī)的潛能。
    在決定最佳的服務(wù)器與 CPU 比例前,徹底測(cè)試你的應(yīng)用程序并確定如下:
    n ???????? 網(wǎng)絡(luò)要求 ? 如果你發(fā)現(xiàn) Web 應(yīng)用程序是主要受網(wǎng)絡(luò) I/O 限制,在增加 CPU 數(shù)前,考慮測(cè)試網(wǎng)絡(luò)的吞吐量。如果實(shí)際是網(wǎng)絡(luò) I/O 限制,安裝一個(gè)更快的網(wǎng)絡(luò)接口卡( NIC )可以提供性能,而不是增加額外的 CPU ,因?yàn)樵诘戎x socket 時(shí),更多的 CPU 會(huì)處于閑置。
    n ???????? 磁盤 I/O 要求 ?? 如果你發(fā)現(xiàn) Web 應(yīng)用程序主要受磁盤 I/O 限制。在配置額外的 CPU 前,就應(yīng)該考慮增加磁盤轉(zhuǎn)速或單個(gè)磁盤。
    總之,在配置額外的 CPU 前,必須確定 Web 應(yīng)用程序是受 CUP 限制,而不是受網(wǎng)絡(luò)或磁盤 I/O 限制。
    對(duì)于受 CPU 限制的應(yīng)用,最初在每個(gè) CPU 上對(duì)一個(gè) WebLogic 實(shí)例進(jìn)行性能測(cè)試。如果 CPU 利用率是一致的或者接近 100 %,然后增加 CPU 比重(例如,為一個(gè) WebLogic 實(shí)例配置兩個(gè) CUP ),記住在產(chǎn)品模式下,應(yīng)該有一些空閑的 CPU 周期存在去執(zhí)行管理任務(wù)。
    雖然 Web 應(yīng)用程序的處理需求變化多端,但 BEA 公司發(fā)現(xiàn) WebLogic 實(shí)例與 CPU 最理想的比例是 1 2
    ?
    十、監(jiān)視 WebLogic
    監(jiān)視 WebLogic 域的健康狀況和性能的工具是管理控制臺(tái)。通過控制臺(tái),你可以觀察到 WebLogic 資源的狀態(tài)和統(tǒng)計(jì)信息,如服務(wù)器, HTTP JTA 子系統(tǒng), JNDI, 安全, CORBA 連接池, EJB JDBC 以及 JMS
    舉個(gè)例子,在 Server ―― >Monitoring ―― >Performance 為當(dāng)前服務(wù)器實(shí)例提供了與等待和運(yùn)行狀態(tài)的請(qǐng)求有關(guān)的性能參考。它包括下列信息:
    n ???????? 隊(duì)列中空閑線程數(shù)。
    n ???????? 隊(duì)列中等待時(shí)間最長(zhǎng)的請(qǐng)求。
    n ???????? 吞吐量,根據(jù)已經(jīng)處理的請(qǐng)求數(shù)來衡量的。
    n ???????? 隊(duì)列長(zhǎng)度,根據(jù)隊(duì)列中等待請(qǐng)求數(shù)來衡量的。
    n ???????? JVM 堆還有的內(nèi)存量。


    jwebee

    我的個(gè)人網(wǎng)站
    posted on 2007-04-19 13:32 周行 閱讀(3452) 評(píng)論(2)  編輯  收藏 所屬分類: IT技術(shù)

    FeedBack:
    # re: 優(yōu)化WebLogic
    2008-06-18 16:14 | 娃娃
    哥們 寫的挺詳細(xì) ,就是 照片讓我找到了 自信  回復(fù)  更多評(píng)論
      
    Java-Android-jwebee
    主站蜘蛛池模板: 久久香蕉国产线看观看亚洲片| 亚洲国产精品成人精品无码区| 亚洲狠狠婷婷综合久久久久| 亚洲专区一路线二| 白白色免费在线视频| 免费污视频在线观看| 成人免费无码大片a毛片| 精品亚洲一区二区三区在线观看| 亚洲自偷自拍另类图片二区| 黄色毛片免费观看| 114级毛片免费观看| 亚洲电影日韩精品 | 久久夜色精品国产亚洲av | 污污视频免费观看网站| 久久久久久一品道精品免费看| 日韩免费视频网站| 久久精品国产亚洲AV嫖农村妇女| 疯狂做受xxxx高潮视频免费| 最近2022中文字幕免费视频| 亚洲欧洲精品成人久久奇米网 | 亚洲a在线视频视频| AV激情亚洲男人的天堂国语| 一级毛片成人免费看免费不卡| 免费又黄又硬又爽大片| 亚洲日产2021三区在线 | 国产又大又粗又硬又长免费| 亚洲一区免费观看| 四虎成人精品国产永久免费无码| 国产免费av片在线看| 亚洲av无码一区二区三区不卡 | 立即播放免费毛片一级| 久草免费在线观看视频| 亚洲无码在线播放| 亚洲AV色无码乱码在线观看 | 免费国产污网站在线观看15 | 亚洲AV午夜成人片| 夜夜爽妓女8888视频免费观看| 最新中文字幕免费视频| 亚洲嫩草影院久久精品| 高清永久免费观看| 九月婷婷亚洲综合在线|