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

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

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

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    http://kimva.blogbus.com/logs/10795676.html 

     在使用TUXEDO的過程中,會遇到一些并發請求量很大的情況,比如某些帳單處理服務或者是在營業下班前的日操作清單服務。這時,一些SERVICE會接收到大量客戶端,甚至長時間的請求,對service,甚至整個系統是嚴峻的考驗。遇到這種情況,單個的server往往難以應付,或者性能不好,我們就想到負載均衡或者使用TUXEDO的MSSQ(Multi Server, Single Queue)。下面筆者根據自己在TUXEDO應用開發和管理配置方面的實踐,結合實際系統壓力測試的結果對相關的問題進行一些探討。

    在沒有負載均衡的情況下,是由一個server(可能包含一個或多個service)來處理客戶端對其中service的請求,所有的請求首先放入這個server的隊列里面,然后server逐個取出處理。在UNIX系統上,TUXEDO較多的使用了隊列,并且也用到了共享內存和信號量,相關的UNIX系統參數會影響到系統的性能,但這個不在本文討論范圍之內,這里假設已經調到了合適的范圍,具體請查閱TUXEDO關于IPC的文檔。

    現以一個帳單處理的server為例,負載均衡前server的ubb配置為:
    billpay SRVGRP=GROUP1 SRVID=1
    在單個server不能滿足性能要求的情況下,就考慮采用TUXEDO的負載均衡方法。
    方法一是直接將相關server啟多份,將上面的配置改為:
    billpay SRVGRP=GROUP1 SRVID=1 MIN = 5 MAX = 10
    這樣tmboot的時候,就會有MIN = 5個billpay啟動,類似下面的情況:
    billpay 00001.00001 GROUP1 1 0 0 ( IDLE )
    billpay 00001.00002 GROUP1 2 0 0 ( IDLE )
    (依此類推,共5個)

    其中第二列是該server的隊列名,"."前面是GRPNO,后面是SRVID,每個server有自己的隊列。相關的另一個參數就是在ubb的*RESOURCES段的LDBAL,表示是否啟動Load Balancing,默認是"N"(不啟動),你可以通過設置成"Y"來啟動。這里需要注意的是,為"N"的時候并不表示多個server不能分擔負載。主要的差別是為"Y"時,TUXEDO在接收到請求時會按照它的負載均衡的算法來找到合適的server來處理,而設置成"N"時,總是由第一個可用的server來處理。通過這種方法可以讓多個server來處理大量并發的請求,就達到了改善性能的目的。

    方法二是采用MSSQ(Multi Server, Single Queue),顧名思義,就是有多份server,但是只有一個隊列(請求隊列)。具體的配置是:
    billpay SRVGRP=GROUP1 SRVID=1 MIN = 5 MAX = 10
    RQADDR=" billpay" REPLYQ=Y

    啟動后的情況如下:
    billpay billpay GROUP1 1 0 0 ( IDLE )
    billpay billpay GROUP1 2 0 0 ( IDLE )
    (依此類推,共5個)

    我們發現幾個billpay server都關聯相同的名為billpay的隊列,這就是所謂的Single Queue。

    與直接多server相比,多了兩個參數,RQADDR是這多個server共用的隊列名,是一種邏輯名,可以自己命名,不和別的沖突就可以,REPLYQ是標示是否設置返回隊列,在使用MSSQ的時候是強烈建議設置,因為這樣可以將請求和返回分開,避免多個server共用隊列時造成混亂。相關的其它參數這里沒有詳細列出。

    到底兩種方式和沒有負載均衡時有什么不同,后面將提供相關的測試結果。先分析一下兩種方法。方法一有多個隊列可以容納請求,但是這些大量的請求怎樣放入這些隊列必定有一定的策略,而且根據LDBAL的設置會不同,但是這個策略本身的運算也是一種消耗,因為每個請求都面臨著這個選擇。因為這種情況下每個隊列是和server對應的,所以隊列的選擇就意味著選擇了相應的那個server,這樣大量的請求就被分流。雖然有選擇的消耗,但是額外的好處也是顯而易見的,那就是有多個queue可用,有效避免了請求并發量很大時隊列的溢出,這種情況在實際的壓力測試中發生過。使用方法二時,放入隊列時不用做選擇,然后每個server的任務就是從隊列取出請求去處理,考慮到多個server并發取隊列,所以用MSSQ時其server的數目不宜太多,官方文檔建議2-12。而且在這種情況下,建議不要設置LDBAL=Y,因為MSSQ本身就是一種基于single queue的負載均衡的方法,這時再使用系統的策略已經沒有意義。這種方法也有一個問題,如果相對于請求數來說,處理得不夠快,就比第一種方法更容易造成隊列溢出。

    因為我們無法知道TUXEDO一些具體的算法和策略,那就用一些具體的測試來比較吧。筆者在一個和實際生產系統配置相同的UNIX+ORACLE+TUXEDO8.0系統上做了一下試驗,被測服務是一個帳單查詢服務,每次根據一批ID從數據庫查詢出具體的帳單,由于都是實際數據和實際使用的服務,有一定的說明力,但是也不排除一些情況造成的誤差。以下是測試的一些結果,每個server的實際運行份數都是10。

    一:客戶端數目為1,循環調用100次。

    1. 方法一,LDBAL = Y or N。結果發現所有的請求都由其中的一個server處理,其它全部空閑。在此基礎上再進行兩次循環調用,結果還是一樣。
    2. 用方法二,LDBAL = Y or N。其中兩次測試的情況是:
    <1>19,19,2,2,1,18,18,1,1,19
    <2>23,8,23,23,23,(其它空閑)
    以上數據說明了兩種方式的調度策略是不一樣的,在單客戶端循環的情況下方法二更合適。

    二:客戶端數目50,每個循環80次,統計總的執行時間。
    1. 用single server。兩次測試的處理時間分別是219s和196s。
    2. LDBAL = Y 方法一:三次測試時間為:63s,79s,69s
    3. LDBAL = N 方法一:三次測試時間為:74s,79s,85s
    4. LDBAL = Y 方法二:三次測試時間為:74s,73s,77s
    5. LDBAL = N 方法二:三次測試時間為:78s,76s,75s

    通過以上數據可以看出不管用那種方法,使用負載均衡相比單個server都可以在大量請求并發時得到更好的性能。但是同時也發現后四種情況的總時間差別不大,考慮一些實際的誤差,很難斷定哪種更好。

    通過前面的分析,并查閱相關的文檔,建議采用的是兩種方式:多個server,不用MSSQ,設置LDBAL = Y;用MSSQ,設置LDBAL = N。當然,在使用TUXEDO的應用系統中,不能絕對的說哪一種方式更好,只能是根據具體的情況來分析,并通過實際的壓力測試來進行選擇,而且這個和具體server的特點也是有關的。

    以上是一些個人分析和測試的結果,算是寫出來和大家探討,也希望大家提出自己的看法并討論。

    posted on 2009-05-26 21:14 jinfeng_wang 閱讀(1130) 評論(0)  編輯  收藏 所屬分類: ZZtuxedo
    主站蜘蛛池模板: 亚洲国产激情在线一区| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲伊人久久大香线蕉综合图片| 亚洲精品无码成人片久久| 亚洲av综合avav中文| 亚洲综合在线视频| 亚洲深深色噜噜狠狠网站| 麻豆安全免费网址入口| 中国精品一级毛片免费播放| 久久久久av无码免费网| 免费大黄网站在线看| 亚洲V无码一区二区三区四区观看| 五级黄18以上免费看| 8090在线观看免费观看| 可以免费观看的一级毛片| 亚洲av片在线观看| 最近免费中文字幕大全免费 | 美女被免费视频网站a| 国产一区二区三区免费视频| 久久亚洲AV成人无码国产| 97精品免费视频| 亚洲人成电影在线观看青青| A毛片毛片看免费| 野花高清在线观看免费3中文| 亚洲国产成人久久综合碰| 精品无码一区二区三区亚洲桃色 | 在线免费一区二区| 亚洲Av熟妇高潮30p| 一级免费黄色大片| 四虎免费在线观看| 日本激情猛烈在线看免费观看| 最近2019中文字幕免费看最新| 久久久亚洲欧洲日产国码是AV| 一级看片免费视频| 亚洲av无码成h人动漫无遮挡 | 久久久久亚洲AV无码观看 | 四虎永久在线精品免费影视| 中国极品美軳免费观看| 亚洲成A∨人片在线观看无码| 香蕉成人免费看片视频app下载| 亚洲国产成人爱av在线播放|