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

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

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

    隨筆 - 1, 文章 - 44, 評(píng)論 - 2, 引用 - 0
    數(shù)據(jù)加載中……

    apache+Tomcat負(fù)載平衡設(shè)置詳解

    一、簡(jiǎn)介:

    每個(gè)Tomcat worker是一個(gè)服務(wù)于web server、等待執(zhí)行servlet的Tomcat實(shí)例。例如我們經(jīng)常使用像Apache之類的web server轉(zhuǎn)發(fā)sevlet請(qǐng)求給位于其后面的一個(gè)Tomcat進(jìn)程(也就是前面所說(shuō)的worker)。本文詳細(xì)介紹了如何配置各種類型worker和loadbalance,并說(shuō)明了各種類型worker的特性和loadbalance配置的原理。

    二、為什么使用Tomcat workers:

    上文描述了一個(gè)非常簡(jiǎn)單的結(jié)構(gòu),事實(shí)上能夠配置多個(gè)Tomcat workers來(lái)處理web server轉(zhuǎn)發(fā)的servlet請(qǐng)求。而這樣配置的理由不外乎以下幾種假想環(huán)境:
    * 我們?cè)陂_(kāi)發(fā)環(huán)境中發(fā)布不同的Tomcat workers為各自不同的應(yīng)用服務(wù)。當(dāng)然在開(kāi)發(fā)環(huán)境中的開(kāi)發(fā)者共享同一個(gè)web server,但是每個(gè)Tomcat worke服務(wù)于擁有它的開(kāi)發(fā)者。
    * 我們?cè)诓煌腡omcat進(jìn)程上定義各自的虛擬主機(jī),這樣不同的公司可以使用各自的web site,從而使他們的web site得到了合理的分割。
    * 我們提供負(fù)載平衡的web site,也就意味著同時(shí)使用多個(gè)Tomcat workers,而每個(gè)Tomcat worker具有獨(dú)立的主機(jī)并且在workers之間要分配通過(guò)web server轉(zhuǎn)發(fā)來(lái)的請(qǐng)求。
    當(dāng)然,這些假想情況也許并不能涵蓋使用多個(gè)workers的所有狀況。

    三、workers.properties配置說(shuō)明:

    定義Tomcat workers的方法是在apache的conf目錄下編寫(xiě)一個(gè)名為“workers.properties”的屬性文件。本文將詳細(xì)解釋如何進(jìn)行配置的:

    1.定義Workers列表:
    定義workers的方法就是在apache的conf目錄下編寫(xiě)一個(gè)workers.properties文件,使其作為apache的插件來(lái)發(fā)揮作用。
    定義workers列表的格式:
    worker.list =<使用“,”分割的worker 名字列表>
    例如:

    worker.list= worker1, worker2

    當(dāng)apache啟動(dòng)時(shí),workers.properties作為插件將初始化出現(xiàn)在worker.list列表中的workers。

    2.定義Workers的類型:

    每個(gè)被命名的worker都應(yīng)有一些關(guān)于其自身的附加信息。這些信息包括了worker的類型和其它相關(guān)信息。這里討論的是JK1.2.5中定義的workers類型。
    定義worker類型的格式:
    worker . worker名字. type =<worker類型>
    worker名字的命名最好遵循java的命名規(guī)范。
    worker類型取值于下面的表格:
    定義一個(gè)名為“l(fā)ocal”的worker,其使用ajpv12協(xié)議與Tomcat 進(jìn)程通訊:

    worker.local.type=ajp12

    定義一個(gè)名為“remote”的worker,其使用ajpv13協(xié)議與Tomcat 進(jìn)程通訊:

    worker.remote.type=ajp13

    定義一個(gè)名為“fast”的worker,其使用JNI的方式與Tomcat 進(jìn)程通訊:

    worker.fast.type=jni

    定義一個(gè)名為“l(fā)oadbalancer”的worker,其作為對(duì)多個(gè)Tomcat 進(jìn)程的負(fù)載平衡使用:

    worker.loadbalancer.type=lb

    各個(gè)類型具有不同的行為,我們?cè)谙挛闹袝?huì)詳細(xì)解釋。

    3.設(shè)置Worker屬性:

    在定義worker之后,還需要提供各個(gè)worker的屬性,這些屬性的定義使用下面的方式:
    worker.<worker名字>.<屬性>=<屬性值>

    3-1 ajp12類型的Worker屬性:.

    ajp12類型的worker工作時(shí)使用基于TCP/IP socket的ajpv12協(xié)議轉(zhuǎn)發(fā)請(qǐng)求給“進(jìn)程外”Tomcat worker。
    ajp12 worker屬性如下:
    host:
    偵聽(tīng)ajp12請(qǐng)求的Tomcat worker主機(jī)。
    port:
    Tomcat worker主機(jī)的偵聽(tīng)端口。
    lbfactor:
    當(dāng)此Tomcat worker被用于一個(gè)負(fù)載平衡worker使用時(shí),此屬性將被使用。它定義了此worker的負(fù)載平衡權(quán)值。
    例如:下面的“worker1”定義了一個(gè)位于www.x.com主機(jī)上的Tomcat,它使用8007端口偵聽(tīng)apache發(fā)來(lái)的請(qǐng)求,并具有2.5的負(fù)載權(quán)值

    worker.worker1.host=www.x.com
    worker.worker1.port=8007
    worker.worker1.lbfactor=2.5

    注意:在ajpv12協(xié)議中,針對(duì)每個(gè)請(qǐng)求都要一個(gè)連接建立、使用、關(guān)閉。其默認(rèn)偵聽(tīng)端口為8007。

    3-2 ajp13類型的Worker屬性:

    ajp13類型的worker工作時(shí)使用基于TCP/IP socket的ajpv13協(xié)議轉(zhuǎn)發(fā)請(qǐng)求給“進(jìn)程外”Tomcat worker。
    ajpv13協(xié)議與ajpv12協(xié)議的主要不同:
    * ajpv13具有更豐富的二進(jìn)制協(xié)議,它使用將頻繁使用的字符串編碼為小整數(shù)的方式對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行壓縮。
    * ajpv13重用打開(kāi)的socket并保留這些打開(kāi)的socket以處理將來(lái)的請(qǐng)求。這在apache與Tomcat之間具有防火墻的網(wǎng)絡(luò)環(huán)境下是必要的。
    * ajpv13具有對(duì)SSL信息的處理能力,以致容器能夠?qū)崿F(xiàn)SSL的相關(guān)方法(如isSecure())。


    注意:ajp13當(dāng)前只能用于支持“進(jìn)程外”協(xié)議的Tomcat 4.0.x, 4.1.x and 5。
    下表描述了ajp13worker接受的屬性:

    host:
    偵聽(tīng)ajp13請(qǐng)求的Tomcat worker主機(jī)。

    port:
    Tomcat worker主機(jī)的偵聽(tīng)端口。

    lbfactor:
    當(dāng)此Tomcat worker被用于一個(gè)負(fù)載平衡worker使用時(shí),此屬性將被使用。它定義了此worker的負(fù)載平衡權(quán)值。

    cachesize:
    當(dāng)在多線程的web server(例如apache2.0、IIS 、Netscape)中使用JK時(shí),此屬性是有效的。如果將cachesize的值設(shè)置為較高的值,這些支持多線程的web server將獲得很好的處理能力。如果此屬性不被設(shè)置,則連接cache特性將失效。

    cache_timeout:
    本屬性用于聲明JK在cache中保留一個(gè)打開(kāi)的socket的時(shí)間,它對(duì)減少web serer的線程數(shù)有所幫助。
    使用cache_timeout的原因:
    周所周知,一個(gè)身背重負(fù)的web server(例如apache)建立childs/threads來(lái)處理負(fù)載,而當(dāng)負(fù)載減少時(shí)它將銷毀無(wú)用的childs/threads。每個(gè)child在轉(zhuǎn)發(fā)請(qǐng)求給Tomcat時(shí)要打開(kāi)一個(gè)ajp13連接,而在Tomcat那一端也將建立一個(gè)ajp13線程與之通訊。但是問(wèn)題出現(xiàn)在一個(gè)ajp13連接建立完成后,child沒(méi)有及時(shí)的釋放那個(gè)ajp13連接,由于web server1將保持它的childs/threads運(yùn)行已處理高負(fù)載,即使childs/threads處理快速的靜態(tài)內(nèi)容,在Tomcat端也將積累很多的無(wú)用ajp13線程。

    socket_keepalive:
    當(dāng)防火墻位于web server與Tomcat之間時(shí),防火墻將嘗試斷開(kāi)未激活的網(wǎng)絡(luò)連接。此屬性將告訴操作系統(tǒng)在未激活的連接中發(fā)送KEEP_ALIVE信息(發(fā)送間隔時(shí)間依賴于操作系統(tǒng)的設(shè)置,一般為120秒),這樣將防止防火墻切斷未激活的網(wǎng)絡(luò)連接。
    但此設(shè)置并不是萬(wàn)能鑰匙,它對(duì)于某些防火墻也無(wú)能為力。

    socket_timeout:
    此屬性說(shuō)明連接在未激活的狀況下持續(xù)多久,web server將主動(dòng)切斷之。這是一個(gè)使Tomcat端的陳舊線程不致過(guò)多的好方法,但是也帶來(lái)了在下一次請(qǐng)求到來(lái)時(shí)需要重新打開(kāi)socket的開(kāi)銷。此屬性與cache_timeout有類似的功效,但是它工作在non-cache模式。

    connect_timeout:
    web server在連接建立后將一個(gè)PING請(qǐng)求發(fā)送到ajp13協(xié)議的連接上。 此屬性說(shuō)明了web server等待PONG回應(yīng)的時(shí)間(以ms為單位)。此屬性在jk 1.2.6版本被增加進(jìn)來(lái),以求避免Tomcat的死機(jī),Tomcat 3.3.2+, 4.1.28+ and 5.0.13+實(shí)現(xiàn)了對(duì)使用ajp13的 ping/pong的支持。此屬性默認(rèn)為失效的。

    prepost_timeout:
    web server在轉(zhuǎn)發(fā)一個(gè)請(qǐng)求后將一個(gè)PING請(qǐng)求發(fā)送到ajp13協(xié)議的連接上。此屬性說(shuō)明了web server等待PONG回應(yīng)的時(shí)間(以ms為單位)。此屬性在jk 1.2.6版本被增加進(jìn)來(lái),以求避免Tomcat的死機(jī),Tomcat 3.3.2+, 4.1.28+ and 5.0.13+實(shí)現(xiàn)了對(duì)使用ajp13的 ping/pong的支持。此屬性默認(rèn)為失效的。

    reply_timeout:
    此屬性告訴web server在接到遠(yuǎn)端的Tomcat已死并實(shí)時(shí)的切換到集群中的另外一個(gè)Tomcat的回應(yīng)之前等待一段時(shí)間。默認(rèn)情況下web server將永遠(yuǎn)等待。屬性值為web server要等待回應(yīng)的時(shí)間(以ms為單位),所以如果具有運(yùn)行時(shí)間較長(zhǎng)的servlet時(shí)設(shè)置其值要小心。此屬性在jk 1.2.6版本被增加進(jìn)來(lái),以求避免Tomcat的死機(jī)和在支持ajp13的servlet引擎上發(fā)生的問(wèn)題。此屬性默認(rèn)為失效的。

    recovery_options:
    此屬性說(shuō)明了web server在檢測(cè)到Tomcat失敗后如何進(jìn)行恢復(fù)工作。默認(rèn)情況下,web server將轉(zhuǎn)發(fā)請(qǐng)求給處于負(fù)載平衡模式中的另一個(gè)Tomcat。屬性值為0,說(shuō)明全部恢復(fù);屬性值為1,說(shuō)明如果在Tomcat接到請(qǐng)求后出現(xiàn)失敗狀況,則不進(jìn)行恢復(fù);屬性值為2,說(shuō)明如果在Tomcat發(fā)送http頭給客戶端后出現(xiàn)失敗狀況,則不進(jìn)行恢復(fù);屬性值為3,說(shuō)明如果在Tomcat接到請(qǐng)求后出現(xiàn)失敗狀況或者在Tomcat發(fā)送http頭給客戶端后出現(xiàn)失敗狀況,則不進(jìn)行恢復(fù)。此屬性在jk 1.2.6版本被增加進(jìn)來(lái),以求避免Tomcat的死機(jī)和在支持ajp13的servlet引擎上發(fā)生的問(wèn)題。此屬性默認(rèn)為全部恢復(fù)。

    例如:一個(gè)名為“worker2”的worker的配置:

    worker.worker2.host=www2.x.com
    worker.worker2.port=8009
    worker.worker2.lbfactor=3.5
    worker.worker2.cachesize=10
    worker.worker2.cache_timeout=600
    worker.worker2.socket_keepalive=1
    worker "worker2" want ajp13 connection to be dropped after 5mn (timeout)
    worker.worker2.socket_timeout=300


    說(shuō)明:上例中的worker要求操作系統(tǒng)在連接上發(fā)送KEEP-ALIVE信號(hào)。
    注意:在ajpv13協(xié)議中默認(rèn)端口為8009。

    4.設(shè)置lb Worker屬性:
    負(fù)載平衡類型的worker并不與Tomcat worker通訊,它負(fù)責(zé)管理這些Tomcat worker。

    其管理范圍如下:
    * 初始化在web server的worker列表中定義的worker。
    * 使用worker的負(fù)載平衡權(quán)值,執(zhí)行基于權(quán)值的負(fù)載平衡,將數(shù)量多的請(qǐng)求發(fā)送到負(fù)載平衡權(quán)值高(在web server看來(lái)就是更加健壯的)的worker。
    * 維護(hù)在同一個(gè)Tomcat worker上的同一個(gè)session的請(qǐng)求,使其發(fā)送到同一個(gè)Tomcat worker上。以達(dá)到Tomcat worker上的session一致性、持續(xù)性。
    * 標(biāo)識(shí)已經(jīng)失敗的Tomcat workers,懸空發(fā)向它們的請(qǐng)求,在被lb worker管理的其它workers上尋找可以失敗恢復(fù)的worker。
    被同一個(gè)lb worker管理多個(gè)worker之間的負(fù)載平衡的(基于它們的lbfactor和當(dāng)前用戶session),也可以盡量避免由于單一的Tomcat進(jìn)程死掉而造成這個(gè)網(wǎng)站被“殺”的不良反應(yīng)。
    下表說(shuō)明了lb worker接受的屬性:
    * balanced_workers:一個(gè)由“,”分割的worker列表,用來(lái)聲明lb worker需要被管理的workers。這些workers不應(yīng)出現(xiàn)在worker.list屬性中。
    * sticky_session:表述是否將對(duì)SESSION ID的請(qǐng)求路由回到相同的Tomcat worker。如果屬性值不為0,它將被設(shè)置為JK_TRUE,session將是粘性的,即SESSION ID的請(qǐng)求路由回到相同的Tomcat worker;當(dāng)Tomcat正使用能夠跨越多個(gè)Tomcat實(shí)例持久化session數(shù)據(jù)的Session Manager時(shí),它將被設(shè)置為JK_FALSE。屬性默認(rèn)值為JK_TRUE。
    例如:worker balance1管理著兩個(gè)workers:worker1、worker2:

    worker.balance1.balanced_workers=worker1, worker2


    5.高級(jí)lb Worker屬性:

    JK 1.2.x版本通過(guò)增加兩個(gè)新的屬性:local_worker_only 和 local_worker 為lb worker增添了新的負(fù)載平衡和容錯(cuò)支持。
    下面讓我們舉一個(gè)實(shí)際的環(huán)境作為example:
    一個(gè)集群具有兩個(gè)節(jié)點(diǎn)(worker1+worker2),一個(gè)web server與tomcat workers一前一后,一個(gè)負(fù)載平衡器(lb Worker)位于節(jié)點(diǎn)的前面、web server的后面。
    配置如下:

    worker.list=router
    # Define a 'local_worker' worker using ajp13
    worker.worker1.port=8009
    worker.worker1.host=node1.domain.org
    worker.worker1.type=ajp13
    worker.worker1.lbfactor=1
    worker.worker1.local_worker=1
    # Define another 'local_worker' worker using ajp13
    worker.worker2.port=8009
    worker.worker2.host=node2.domain.org
    worker.worker2.type=ajp13
    worker.worker2.lbfactor=1
    worker.worker2.local_worker=0
    # Define the LB worker
    worker.router.type=lb
    worker.router.balanced_workers=worker1,worker2
    worker.router.local_worker_only=1


    在worker1和worker2上的local_worker標(biāo)志告訴lb_worker哪個(gè)連接屬于本地worker。

    如果local_worker值為非0,則它將被設(shè)置為JK_TRUE,用來(lái)標(biāo)記“l(fā)ocal worker”,而JK_FALSE的情況則相反。如果至少一個(gè)worker被標(biāo)記為local worker,則lb_worker將工作于local worker模式。這種模式下,所有的local workers將被移到在lb_worker中的內(nèi)部worker列表的頭部。

    這意味著一個(gè)帶有session id的請(qǐng)求到達(dá)lb_worker時(shí),相應(yīng)的worker(根據(jù)權(quán)值排序,權(quán)值最大的那個(gè)worker)將被確定作為此請(qǐng)求的接受/處理者。如果這個(gè)worker死掉/當(dāng)機(jī),請(qǐng)求將被發(fā)送到處于非錯(cuò)誤狀態(tài)的第一個(gè)local worker;如果一個(gè)沒(méi)有session id的請(qǐng)求到達(dá)lb_worker時(shí),此請(qǐng)求將被路由到第一個(gè)local worker。如果所有的local worker均處于錯(cuò)誤狀態(tài),則這時(shí)“l(fā)ocal_worker_only”標(biāo)志顯得尤其重要。如果local_worker_only的屬性值為非0,則它被設(shè)置為 JK_TRUE,否則被設(shè)置為 JK_FALSE。當(dāng)它被設(shè)置為 JK_TRUE時(shí),這個(gè)沒(méi)有session id的請(qǐng)求將得到一個(gè)錯(cuò)誤作為回應(yīng),否則lb_worker將嘗試將請(qǐng)求路由到其它的被管理的worker上。如果其中的一個(gè)worker處于錯(cuò)誤狀態(tài),并且恢復(fù)會(huì)話的工作并沒(méi)有任何改變,local worker將查找這個(gè)沒(méi)有session id的請(qǐng)求(因?yàn)樵趌ocal worker中保存有這個(gè)請(qǐng)求的session),而其它的worker只能查找?guī)в衧ession id的請(qǐng)求。

    注意:local_worker默認(rèn)值是0,local_worker_only默認(rèn)值也是0。

    6.為什么需要這么復(fù)雜的過(guò)程嗎?

    因?yàn)槲覀儗?duì)于一個(gè)關(guān)閉的節(jié)點(diǎn)需要一個(gè)具有靈性的維護(hù)。
    在節(jié)點(diǎn)前面的平衡器周期性的對(duì)每個(gè)節(jié)點(diǎn)的特定端口進(jìn)行查詢。如果我們從集群中移走一個(gè)節(jié)點(diǎn),我們就會(huì)隱性的關(guān)閉掉這個(gè)特定的端口。由于負(fù)載平衡器不能連接它,這個(gè)節(jié)點(diǎn)將被標(biāo)記為down。但是我們沒(méi)有移動(dòng)在那個(gè)關(guān)閉的節(jié)點(diǎn)上的session到其它的節(jié)點(diǎn)上。在這個(gè)環(huán)境下,如果平衡器發(fā)送一個(gè)沒(méi)有session id的請(qǐng)求到一個(gè)端口被關(guān)掉的節(jié)點(diǎn),那么一個(gè)錯(cuò)誤將發(fā)生。如果平衡器測(cè)試到一個(gè)節(jié)點(diǎn)被標(biāo)記為down的狀態(tài),而沒(méi)有其它的節(jié)點(diǎn)允許發(fā)送沒(méi)有session id的請(qǐng)求。這樣這些陳舊的session請(qǐng)求就只有路由到那個(gè)被關(guān)閉的節(jié)點(diǎn)才能被接受。在一段時(shí)間后,這些陳舊的session將超時(shí)。由于所有的陳舊的session過(guò)期,那個(gè)不可達(dá)(被關(guān)閉)的節(jié)點(diǎn)將失去這個(gè)請(qǐng)求。同時(shí)也會(huì)導(dǎo)致我們的servlet系統(tǒng)發(fā)送一個(gè)沒(méi)有session id的重定向回應(yīng)給瀏覽器。

    但是可能被關(guān)閉的節(jié)點(diǎn)將會(huì)up,重新加入到集群中來(lái),在它上面仍將保留著陳舊的session。所以在最后一個(gè)session超時(shí)后,更新節(jié)點(diǎn)能夠?yàn)殛惻f的session的恢復(fù)帶來(lái)希望,而不是殺掉sessions或者把它們移到其它節(jié)點(diǎn)上。而且有時(shí)如果那些陳舊的session中有許多big的對(duì)象,那么移動(dòng)它們也將花費(fèi)許多時(shí)間。

    7.jni類型的Worker屬性:

    jni worker會(huì)在web server進(jìn)程中打開(kāi)一個(gè)JVM,并在其中執(zhí)行Tomcat,這叫做“進(jìn)程內(nèi)”worker。來(lái)往于JVM的消息將通過(guò)調(diào)用JNI方法被傳遞,這使jni worker比那些需要使用ajp消息通訊的“進(jìn)程外”worker執(zhí)行的更快。

    注意:由于JVM是多線程的,jni worker應(yīng)該只被用于在支持對(duì)線程的web server(AOLServer, IIS, Netscape and Apache 2.0)上。同時(shí)還應(yīng)該確認(rèn)在web server上使用的線程方案是否與被使用的JK web server插件相匹配。

    由于jni worker 打開(kāi)了一個(gè)JVM,它將接受一些屬性(例如classpath等)并將其傳遞給JVM:
    worker.worker名.class_path:“進(jìn)程內(nèi)”的JVM要使用的classpath。它將包括所有的Tomcat的jar文件和class、配置文件等。

    為了獲得JSP編譯器的支持,我們需要將Javac添加到classpath中。當(dāng)然對(duì)于Java2需要添加tools.jar到classpath,而對(duì)于JDK1.xx則要添加classes.zip到classpath。

    worker.worker名.class_path:用于以多行的形式聲明多個(gè)classpath。JK環(huán)境將用“:”或者“;”把這些classpath;連接起來(lái)。

    例如:給名為“wrkjni”的worker設(shè)置classpath。


    worker.wrkjni.class_path=/var/tomcat3/lib/tomcat.jar
    worker.wrkjni.class_path=/opt/IBMJava2-131/lib/tools.jar


    worker.worker名.bridge:用于標(biāo)識(shí)將通過(guò)JNI方式被使用的Tomcat的類型。此屬性目前有兩個(gè)屬性值:tomcat32 or tomcat33。Tomcat 3.2.x雖然已經(jīng)過(guò)時(shí),但是被提供用于發(fā)布在一些類似iSeries系統(tǒng)上。此屬性的默認(rèn)值為tomcat33。
    例如:給“wrkjni”設(shè)置bridge類型為tomcat3.3。


    worker.wrkjni.bridge=tomcat33


    worker.worker名.cmd_line: 此屬性提供了在Tomcat啟動(dòng)代碼執(zhí)行的命令行。使用時(shí)將命令行的命令、參數(shù)分解為多個(gè)cmd_line屬性。JK環(huán)境通過(guò)在各個(gè)cmd_line屬性值之間添加空格將這些cmd_line連接在一起。
    例如:設(shè)置“wrkjni”的cmd_line屬性。


    worker.wrkjni.cmd_line=-config
    worker.wrkjni.cmd_line=/etc/tomcat3/conf/alt-server.xml
    worker.wrkjni.cmd_line=-home
    worker.wrkjni.cmd_line=/var/tomcat3


    上面例子中的第一行聲明了-config參數(shù)名,而第二行聲明了與之對(duì)應(yīng)的參數(shù)值。第三行與第四行同理。

    worker.worker名.jvm_lib:用于聲明JVM的實(shí)現(xiàn)庫(kù)的完整路徑。Jni worker使用這個(gè)路徑動(dòng)態(tài)裝載JVM。
    例如:設(shè)置“wrkjni”的JVM shared lib (IBM SDK on Linux)。

    worker.wrkjni.jvm_lib=/opt/IBMJava2-131/jre/bin/classic/libjvm.so

    例如:設(shè)置“wrkjni”的JVM shared lib (Sun SDK on Windows)。

    worker.wrkjni.jvm_lib=c:\JDK\1.3.1\jre\bin\classic

    worker.worker名.stdout:設(shè)置JVM寫(xiě)它的System.out的完整路徑位置。
    例如:將“wrkjni”的JVM系統(tǒng)輸出路徑設(shè)置為/var/log/http/jk-jvm-out.log。

    worker.wrkjni.stdout=/var/log/http/jk-jvm-out.log

    worker.worker名.stderr:設(shè)置JVM寫(xiě)它的System.err的完整路徑位置。
    例如:將“wrkjni”的JVM系統(tǒng)錯(cuò)誤輸出路徑設(shè)置為/var/log/http/jk-jvm-err.log

    worker.wrkjni.stderr=/var/log/http/jk-jvm-out.log

    worker.worker名.ms:設(shè)置JVM的初始堆大小。
    例如:設(shè)置“wrkjni”的JVM的初始堆為64M。

    worker.wrkjni.ms=64


    worker.worker名.mx:設(shè)置JVM的最大的堆大小。
    例如:設(shè)置“wrkjni”的JVM堆最大為128M

    worker.wrkjni.mx=128


    worker.worker名.sysprops:設(shè)置JVM的系統(tǒng)屬性。
    例如:設(shè)置“wrkjni”的JVM使用法語(yǔ)。

    worker.wrkjni.sysprops=-Duser.region=FR


    worker.worker名.ld_path:設(shè)置附加的動(dòng)態(tài)鏈接庫(kù)路徑(類似于LD_LIBRARY_PATH)
    例如:添加一些動(dòng)態(tài)鏈接庫(kù)路徑到“wrkjni”的java環(huán)境中。

    worker.wrkjni.ld_path=/opt/IBMJava2-131/jre/bin/
    worker.wrkjni.ld_path=/opt/IBMJava2-131/jre/bin/classic


    注意:在Linux下,上面的ld_path并不能更新LD_LIBRARY_PATH,所以需要在執(zhí)行web server之前手動(dòng)更新LD_LIBRARY_PATH,。

    8.屬性文件宏:

    我們可以在屬性文件中定義“宏”。這些宏讓我們定義屬性,并在以后使用它們來(lái)構(gòu)建其它的屬性文件。當(dāng)我們修改Java Home、Tomcat Home、系統(tǒng)路徑分隔符時(shí)這是很有用的。
    例如:定義了屬性workers.tomcat_home、workers.java_home。

    workers.tomcat_home=d:\tomcat
    workers.java_home=d:\sdk\jdk1.2.2

    在定義worker.inprocess.class_path時(shí)就可以使用前面定義的workers.tomcat_home。

    worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes



    9.一個(gè)簡(jiǎn)單而完整的worker.properties:

    文件中定義了比較完整的結(jié)構(gòu),可以做為參考模版:
    * 一個(gè)位于localhost的使用8007端口的ajp12 worker;
    ????* 一個(gè)位于localhost的使用8008端口的ajp13 worker;
    ????* 一個(gè)jni worker;
    ????*??一個(gè)lb worker:負(fù)責(zé)ajp12 worker、ajp13 workers的負(fù)載平衡。
    文件內(nèi)容如下:

    # Define some properties
    workers.apache_log=/var/log/httpd/
    workers.tomcat_home=/var/tomcat3
    workers.java_home=/opt/IBMJava2-131/
    ps=/
    # Define 4 workers, 3 real workers using ajp12, ajp13, jni, the last one being a loadbalancing worker
    worker.list=worker1, worker2, worker3, worker4
    # Set properties for worker1 (ajp12)
    worker.worker1.type=ajp12
    worker.worker1.host=locahost
    worker.worker1.port=8007
    worker.worker1.lbfactor=5
    # Set properties for worker2 (ajp13)
    worker.worker2.type=ajp13
    worker.worker2.host=locahost
    worker.worker2.port=8009
    worker.worker2.lbfactor=50
    worker.worker2.cachesize=10
    worker.worker2.cache_timeout=600
    worker.worker2.socket_keepalive=1
    worker.worker2.socket_timeout=300
    # Set properties for worker3 (jni)
    worker.worker3.type=jni
    # Set worker3 bridge type, here Tomcat 3.3
    worker.worker3.bridge=tomcat33
    # Set worker3 classpath
    worker.worker3.class_path=$(workers.tomcat_home)$(ps)classes
    worker.worker3.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
    # Set worker3 tomcat command line
    worker.worker3.cmd_line=-home
    worker.worker3.cmd_line=$(workers.tomcat_home)
    # Set worker3 Tomcat/JVM settings
    worker.worker3.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.so
    worker.worker3.stdout=$(workers.apache_log)$(ps)inprocess.stdout
    worker.worker3.stderr=$(workers.apache_log)$(ps)inprocess.stderr
    worker.worker3.sysprops=tomcat.home=$(workers.tomcat_home)
    # Set properties for worker4 (lb) which use worker1 and worker2
    worker.worker4.balanced_workers=worker1,worker2

    posted on 2006-11-24 09:40 ASONG 閱讀(220) 評(píng)論(0)  編輯  收藏 所屬分類: 應(yīng)用服務(wù)器

    主站蜘蛛池模板: 99精品免费视频| 亚洲AV人无码激艳猛片| 久久成人国产精品免费软件| 美女被免费视频网站a| 亚洲中文字幕在线无码一区二区 | 毛片在线播放免费观看| 亚洲爆乳无码精品AAA片蜜桃| 两个人的视频高清在线观看免费| 91在线亚洲综合在线| 亚洲AV无码不卡在线播放| 在线精品亚洲一区二区三区| 精品久久久久久久免费加勒比| 亚洲阿v天堂在线2017免费| 亚洲Av永久无码精品黑人 | 午夜不卡AV免费| 亚洲综合一区国产精品| 亚洲第一页中文字幕| 亚洲AV无码一区二区二三区软件| 最新欧洲大片免费在线| 最近中文字幕无免费| 国产精品免费观看调教网| 免费国产成人α片| 在线观看免费无码专区| 18禁超污无遮挡无码免费网站| 亚洲日本国产综合高清| 亚洲一级毛片在线播放| 亚洲欧洲另类春色校园小说| 免费无码婬片aaa直播表情| 亚洲精品乱码久久久久66| 中文字幕亚洲日本岛国片| 亚洲AV无码乱码精品国产| 免费v片视频在线观看视频| 国产午夜鲁丝片AV无码免费| 国产又大又长又粗又硬的免费视频| 在线免费播放一级毛片| 国产精品九九久久免费视频| 精品多毛少妇人妻AV免费久久| 亚洲国产日韩综合久久精品| 亚洲精品国产精品国自产网站| 色噜噜AV亚洲色一区二区| 日韩亚洲欧洲在线com91tv|