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

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

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

    細(xì)心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點(diǎn)粗墨,七八筆買賣,九十道人情。

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

    J2EE中軟件基礎(chǔ)結(jié)構(gòu)的瓶頸

     
    可擴(kuò)展性是系統(tǒng)中的一個(gè)非常重要的非功能性需求。但系統(tǒng)中可能有多個(gè)瓶頸會(huì)阻礙系統(tǒng)的擴(kuò)展性。在這篇文章中,我們嘗試分析軟件基礎(chǔ)結(jié)構(gòu)成為瓶頸的案例,而不考慮硬件資源上的限制(如CPU、磁盤空間、網(wǎng)絡(luò)速度等)。下面我們將探討一下這個(gè)問(wèn)題。

    下面是一些整篇文章中用到的一些術(shù)語(yǔ):
    ·吞吐量:系統(tǒng)支持的每秒能夠處理的事務(wù)個(gè)數(shù)。
    ·服務(wù)請(qǐng)求:每個(gè)事務(wù)中特定硬件的使用率,等于硬件使用率除以吞吐量。
    ·硬件資源:指處理器、內(nèi)存、磁盤和網(wǎng)絡(luò)。
    ·軟件資源:指WEB線程、執(zhí)行線程、BEAN池及數(shù)據(jù)庫(kù)連接池等。
    ·預(yù)計(jì)時(shí)間:用戶預(yù)計(jì)兩次并發(fā)提交請(qǐng)求之間的時(shí)間。
    ·短時(shí)間法則:一個(gè)驗(yàn)證測(cè)試及確信測(cè)試環(huán)境不是瓶頸的法則。
    ·響應(yīng)時(shí)間:用戶等待他提交的請(qǐng)求返回響應(yīng)的時(shí)間。

    理論基礎(chǔ)

    任何J2EE應(yīng)用通常都有下面幾個(gè)層次,如圖1:
    1、硬件基礎(chǔ)結(jié)構(gòu)資源(處理器、內(nèi)存、磁盤和網(wǎng)絡(luò))
    2、軟件基礎(chǔ)結(jié)構(gòu)資源(JVM,WEB服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器)
    3、軟件應(yīng)用(J2EE應(yīng)用)



    Figure 1. Snapshot of a J2EE system

    這兒有兩個(gè)可能性導(dǎo)致瓶頸:硬件成為主要瓶頸或者軟件成為主要瓶頸。在第一種情況,硬件資源不足夠而軟件資源很充分,如圖2。隨著負(fù)載的增加,硬件資源成為瓶頸,而軟件可以繼續(xù)擴(kuò)展。減輕這個(gè)瓶頸的方案通常是擴(kuò)大或者增加硬件。




    Figure 2. The hardware pipe becomes a bottleneck


    在第二種情況,硬件資源是足夠的而軟件資源相對(duì)有限。隨著負(fù)載的增加,軟件資源成為瓶頸,如圖3。減輕這種瓶頸的方案通常是使用軟件群集或優(yōu)化軟件。




    Figure 3. Software pipe becomes a bottleneck

    應(yīng)用服務(wù)器如何工作?

    來(lái)考慮一下應(yīng)用服務(wù)器的內(nèi)部機(jī)制。應(yīng)用服務(wù)器的基本功能包括事務(wù)管理、數(shù)據(jù)持久、對(duì)象池、SOCKET處理和請(qǐng)求處理。這些功能的流程如圖4。有各種組件來(lái)處理這些功能。這些組件需要同步應(yīng)用服務(wù)器中的線程來(lái)維護(hù)數(shù)據(jù)的一致性并操作數(shù)據(jù)。雖然這種同步對(duì)應(yīng)用服務(wù)器的功能正確性是必須而且有用的,但是也成為高負(fù)載的限制,即使有足夠的硬件資源。




    Figure 4. Internals of an application server

    實(shí)驗(yàn)

    為了理解瓶頸的狀況,我們?cè)诨赪indows/Intel平臺(tái)用流行的J2EE應(yīng)用服務(wù)器來(lái)測(cè)試一下JAVA PETSTORE應(yīng)用。一些測(cè)試用例如PetStore應(yīng)用的瀏覽和購(gòu)買周期來(lái)測(cè)試擴(kuò)展性。我們確信整個(gè)測(cè)試環(huán)境(包括操作系統(tǒng)、JVM、應(yīng)用服務(wù)器和應(yīng)用自身)已經(jīng)盡可能優(yōu)化了,而且J2EE應(yīng)用沒(méi)有任何瓶頸或同步問(wèn)題。我們使用了多用戶負(fù)載測(cè)試并觀察了響應(yīng)時(shí)間、吞吐量、資源利用率等指標(biāo)。

    環(huán)境如下:
    1、        J2EE PetStore應(yīng)用
    2、        J2EE應(yīng)用服務(wù)器
    3、        Sun JVM 1.3
    4、        Windows 2000高級(jí)服務(wù)器
    5、        Intel Dell PowerEdge 8450 (8Intel至強(qiáng)800MHz處理器, 4GB RAM)
    6、        100Mbps Cisco dedicated network
    7、        負(fù)載測(cè)試工具WebLoad








    在這個(gè)測(cè)試中我們看到即使有足夠的硬件資源,應(yīng)用服務(wù)器的實(shí)例個(gè)數(shù)限制了擴(kuò)展的能力。在這里軟件資源(如執(zhí)行線程、BEAN池大小、數(shù)據(jù)庫(kù)池和其他應(yīng)用服務(wù)器參數(shù))優(yōu)化后即使這些資源不足也不會(huì)影響系統(tǒng)的擴(kuò)展。下面我們來(lái)研究一下減輕這種問(wèn)題的方案。
    注:Sun J2EE PetStore可以被更多地優(yōu)化來(lái)改善性能和可擴(kuò)展性。


    解決方案

    同一機(jī)器上的群集

    當(dāng)吞吐量滿載了應(yīng)用服務(wù)器的一個(gè)實(shí)例時(shí),需要增加一個(gè)實(shí)例來(lái)減輕這種問(wèn)題。這個(gè)方案如圖5。




    Figure 5. Instance clusters on the same hardware box

    當(dāng)前機(jī)器的CPU使用率只有40%因而有足夠空間來(lái)增加一個(gè)實(shí)例。我們可以發(fā)現(xiàn)在增加了實(shí)例后,吞吐量也增加了50%,如表2





    在不同機(jī)器的群集
    當(dāng)吞吐量滿載了應(yīng)用服務(wù)器的一個(gè)實(shí)例時(shí),機(jī)器的CPU使用率只有40%。因?yàn)?CPU的機(jī)器未完全利用,所以我們測(cè)試一下更低配置的機(jī)器。現(xiàn)在我們使用兩個(gè)4CPU的機(jī)器,如圖6。




    Figure 6. Instance clusters on different hardware boxes


    我們發(fā)現(xiàn)4CPU機(jī)器的CPU使用率已達(dá)到80%,再增加實(shí)例也沒(méi)有什么用處了。因此我們又增加一臺(tái)4CPU的機(jī)器來(lái)運(yùn)行應(yīng)用的實(shí)例。在增加機(jī)器后,吞吐量幾乎翻了一倍。在這里我們確信數(shù)據(jù)庫(kù)服務(wù)器不會(huì)成為瓶頸。

    注:在上面的兩臺(tái)機(jī)器的測(cè)試中,負(fù)載平衡是通過(guò)一種不增加應(yīng)用服務(wù)器實(shí)例功能負(fù)載的方式來(lái)處理的。但是在實(shí)際的生產(chǎn)環(huán)境中很難做到。

    因?yàn)槲覀冇^察到8CPU的機(jī)器被沒(méi)有被完全利用,所以我們使用4CPU的機(jī)器重新測(cè)試了一遍。測(cè)試的結(jié)果可以在下表中看到,分別對(duì)應(yīng)配置1和2。4CPU的配置幾乎被完全利用了,這意味著使用4CPU的配置比8CPU的配置更實(shí)際,因?yàn)榍罢呋ㄙM(fèi)更少。





    小結(jié)

    這些實(shí)驗(yàn)指出了軟件基礎(chǔ)結(jié)構(gòu)如應(yīng)用服務(wù)器實(shí)例可能成為瓶頸,并給出了一些解決方案來(lái)減輕這種問(wèn)題(包括在相同或不同機(jī)器上的群集)。這個(gè)問(wèn)題需要在J2EE應(yīng)用的負(fù)載計(jì)劃或大小確定時(shí)優(yōu)先考慮,因?yàn)檫@直接影響到應(yīng)用的擴(kuò)展性。這種想法很重要,下面我通過(guò)一個(gè)情景對(duì)話來(lái)表達(dá)。

    項(xiàng)目經(jīng)理:你的意思是應(yīng)用服務(wù)器(代表軟件基礎(chǔ)結(jié)構(gòu))會(huì)成為系統(tǒng)的瓶頸。
    性能架構(gòu)師:是的
    項(xiàng)目經(jīng)理:那為什么這種情況不是經(jīng)常發(fā)生。
    性能架構(gòu)師:是的,因?yàn)橛袝r(shí)候瓶頸首先發(fā)生在硬件或應(yīng)用本身。這時(shí)候應(yīng)用服務(wù)器還沒(méi)有使用到所有的擴(kuò)展性。
    項(xiàng)目經(jīng)理:這是事實(shí)。那么解決這種瓶頸的方法就是使用群集。如果有足夠的硬件資源就在同一臺(tái)機(jī)器上跑群集否則在多臺(tái)機(jī)器中配置。
    性能架構(gòu)師:是的。這也是在這篇文章中所得到的。
    posted on 2007-05-06 12:41 張金鵬 閱讀(157) 評(píng)論(0)  編輯  收藏 所屬分類: 項(xiàng)目框架的設(shè)想
    主站蜘蛛池模板: 国产啪亚洲国产精品无码| 亚洲GV天堂GV无码男同| 免费人妻av无码专区| 曰批视频免费40分钟试看天天| 在线播放亚洲精品| 亚洲日本va在线观看| 亚洲av永久无码精品表情包| 国产精品色午夜免费视频| 中文毛片无遮挡高潮免费| 最近2019中文免费字幕在线观看 | 久久久免费观成人影院| 亚洲人成色在线观看| 亚洲国产精品午夜电影| 亚洲国产精品一区| 亚洲国产美女精品久久久久∴| 亚洲 另类 无码 在线| 大学生美女毛片免费视频| 57PAO成人国产永久免费视频 | 国产精品亚洲w码日韩中文| 国产色爽免费视频| 午夜毛片不卡高清免费| 最近最好的中文字幕2019免费 | 亚洲a级成人片在线观看| 亚洲精品在线视频观看| 久久久久亚洲AV无码观看| 久久亚洲国产午夜精品理论片| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲A∨精品一区二区三区下载| 亚洲国产成a人v在线观看| 亚洲成人高清在线观看| 亚洲第一页在线视频| 久久精品蜜芽亚洲国产AV| 久久久久亚洲av无码专区蜜芽| 亚洲成色在线综合网站| 久久久久亚洲av无码专区蜜芽| 亚洲av无码av制服另类专区| 亚洲人成网亚洲欧洲无码久久| 国产亚洲精品资源在线26u| 国产国拍亚洲精品mv在线观看| 亚洲大尺度无码无码专区| 久久精品国产亚洲77777|