???????? 最近公司的項目滬杭滬寧的高鐵項目中所有的售票服務(wù)器的集群在tuxedo三個節(jié)點中。在10月下旬的一個下午,滬杭和滬寧的高鐵售票非常的緩慢,一張票需要2分鐘,針對這種情況,向領(lǐng)導(dǎo)報告之后,不久領(lǐng)導(dǎo)回復(fù),tuxedo服務(wù)的由于配置的問題,致使一種一臺服務(wù)超負(fù)荷使用,致使請求緩慢。為了盡快回復(fù)快速售票,只有關(guān)閉其中的一個服務(wù)節(jié)點,讓各線重新啟動服務(wù)并修改配置。真是一個悲劇一個!據(jù)說其中一個服務(wù)關(guān)掉之后仍然需要一個小時的時間所有的線程中的所有的請求隊列才最終全部銷毀。
?
?
??????? 今天有時間,開始查找關(guān)于tuxedo的負(fù)載均衡的文檔學(xué)習(xí)。
?
?
???? 我們說了很多負(fù)載均衡的問題,我們都是針對網(wǎng)絡(luò)方面進(jìn)行解說的。其實,在服務(wù)器的應(yīng)用線程方面也可以進(jìn)行負(fù)載均衡的優(yōu)化。在這里我們對事務(wù)處理的Tuxedo的負(fù)載均衡問題進(jìn)行一個解說。現(xiàn)在就讓我們一起從文中來了解具體的內(nèi)容吧。
Tuxedo中間件通過將客戶端請求進(jìn)行排隊的方式,實現(xiàn)將客戶請求以均衡的方式交給服務(wù)器進(jìn)行處理,從而達(dá)到減輕應(yīng)用服務(wù)器資源負(fù)擔(dān)的目的?我們可以通過合理設(shè)置服務(wù)進(jìn)程個數(shù)和請求隊列個數(shù)來達(dá)到提高大并發(fā)量應(yīng)用的性能的目的?在最簡單的情況下,只有一個服務(wù)進(jìn)程(可能包含一個或多個服務(wù))來處理客戶端對其中服務(wù)的請求,所有的請求首先放入這個服務(wù)進(jìn)程的隊列里面,然后服務(wù)進(jìn)程逐個取出處理?復(fù)雜一些,如果一個服務(wù)進(jìn)程不能滿足業(yè)務(wù)系統(tǒng)對性能的要求,tuxedo可以啟動服務(wù)進(jìn)程的多個實例,來提高服務(wù)進(jìn)程對請求的處理速度,此時tuxedo配置請求隊列的方式就會影響到大并發(fā)請求應(yīng)用的性能,下面我們以simpserv這個簡單應(yīng)用為例,對tuxedo的負(fù)載均衡方式加以探討?
一?單進(jìn)程單隊列
????? 單server單隊列方式下UBBconfig的配置如下:
simpserv SRVGRP=GROUP1 SRVID=1
這時tuxedo在boot時只啟動一個服務(wù)進(jìn)程提供服務(wù),所有的請求首先放入這個服務(wù)進(jìn)程的隊列里面,然后服務(wù)進(jìn)程逐個取出處理?單個服務(wù)進(jìn)程不能滿足要求的情況下,就要考慮多進(jìn)程的方式?
二?多進(jìn)程多隊列
多進(jìn)程多隊列方式tuxedo直接啟動服務(wù)進(jìn)程的多個實例,每個server都有自己的請求隊列?UBBconfig中*SERVERS段描述部分有幾個參數(shù)控制著進(jìn)程和隊列的啟停方式?其中,MIN代表最少啟動的進(jìn)程個數(shù),其缺省值為1? MAX代表啟動的進(jìn)程最大個數(shù),其缺省等于MIN,如果設(shè)置了MAX值且大于MIN,則代表tuxedo可以在服務(wù)進(jìn)程忙時自動啟動最多到MAX個進(jìn)程實例?單進(jìn)程單隊列的模式中,由于沒有指定MIN和MAX參數(shù),因此MAX和MIN二參數(shù)取了缺省值1,即單服務(wù)進(jìn)程實例方式?
多進(jìn)程多隊列的UUBconfig配置舉例如下:
Simpserv SRVGRP=GROUP1 SRVID=1 MIN = 3 MAX = 5
CLOPT="-A -r -v -p 3,10:6,5"
如果沒有指定請求隊列名稱,每個simpserv進(jìn)程都會生成一個請求隊列,第二列就是該進(jìn)程對應(yīng)的隊列名,隊列名稱的缺省值為GRPNO.SRVID,既“."前面是GRPNO,后面是SRVID,可以看出每個simpserv進(jìn)程有自己的請求隊列?CLOPT中的-p參數(shù)控制tuxedo根據(jù)系統(tǒng)負(fù)載情況可以自動啟動或停止一些simpserv進(jìn)程,本例表示,隊列等待請求大于6個且時間超過 5秒服務(wù)進(jìn)程自動增加,隊列等待請求小于3個且時間超過20秒時,服務(wù)服務(wù)進(jìn)程自動減少,但實存的進(jìn)程個數(shù)限制在 MIN和MAX之間?相關(guān)的另一個參數(shù)就是UUBconfig中*RESOURCES段的LDBAL,表示是否啟動負(fù)載均衡機(jī)制,默認(rèn)是“N"(不啟動),你可以通過設(shè)置成“Y"來啟動?這里需要注意的是,為“N"的時候并不表示多個服務(wù)進(jìn)程不能分擔(dān)負(fù)載?主要的差別是為“Y"時,TUXEDO在接收到請求時會按照它的負(fù)載均衡的算法來找到合適的服務(wù)進(jìn)程來處理,而設(shè)置成“N"時,總是由第一個可用的進(jìn)程來處理?通過這種方法可以讓多個進(jìn)程來處理大量并發(fā)的請求,就達(dá)到了改善性能的目的?SRVID取值介于SRVID和SRVID+MAX-1,系統(tǒng)自動賦值?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
