對于進行處理的Tuxedo負載均衡介紹
我們說了很多負載均衡的問題,我們都是針對網絡方面進行解說的。其實,在服務器的應用線程方面也可以進行負載均衡的優(yōu)化。在這里我們對事務處理的Tuxedo的負載均衡問題進行一個解說?,F(xiàn)在就讓我們一起從文中來了解具體的內容吧。
Tuxedo中間件通過將客戶端請求進行排隊的方式,實現(xiàn)將客戶請求以均衡的方式交給服務器進行處理,從而達到減輕應用服務器資源負擔的目的。我們可以通過合理設置服務進程個數(shù)和請求隊列個數(shù)來達到提高大并發(fā)量應用的性能的目的。在最簡單的情況下,只有一個服務進程(可能包含一個或多個服務)來處理客戶端對其中服務的請求,所有的請求首先放入這個服務進程的隊列里面,然后服務進程逐個取出處理。復雜一些,如果一個服務進程不能滿足業(yè)務系統(tǒng)對性能的要求,tuxedo可以啟動服務進程的多個實例,來提高服務進程對請求的處理速度,此時tuxedo配置請求隊列的方式就會影響到大并發(fā)請求應用的性能,下面我們以simpserv這個簡單應用為例,對tuxedo的負載均衡方式加以探討。
一、單進程單隊列
單server單隊列方式下UBBconfig的配置如下:
simpserv SRVGRP=GROUP1 SRVID=1
這時tuxedo在boot時只啟動一個服務進程提供服務,所有的請求首先放入這個服務進程的隊列里面,然后服務進程逐個取出處理。單個服務進程不能滿足要求的情況下,就要考慮多進程的方式。
二、多進程多隊列
多進程多隊列方式tuxedo直接啟動服務進程的多個實例,每個server都有自己的請求隊列。UBBconfig中*SERVERS段描述部分有幾個參數(shù)控制著進程和隊列的啟停方式。其中,MIN代表最少啟動的進程個數(shù),其缺省值為1。 MAX代表啟動的進程***個數(shù),其缺省等于MIN,如果設置了MAX值且大于MIN,則代表tuxedo可以在服務進程忙時自動啟動最多到MAX個進程實例。單進程單隊列的模式中,由于沒有指定MIN和MAX參數(shù),因此MAX和MIN二參數(shù)取了缺省值1,即單服務進程實例方式。
多進程多隊列的UUBconfig配置舉例如下:
Simpserv SRVGRP=GROUP1 SRVID=1 MIN = 3 MAX = 5
CLOPT="-A -r -v -p 3,10:6,5"
如果沒有指定請求隊列名稱,每個simpserv進程都會生成一個請求隊列,第二列就是該進程對應的隊列名,隊列名稱的缺省值為GRPNO.SRVID,既“."前面是GRPNO,后面是SRVID,可以看出每個simpserv進程有自己的請求隊列。CLOPT中的-p參數(shù)控制tuxedo根據(jù)系統(tǒng)負載情況可以自動啟動或停止一些simpserv進程,本例表示,隊列等待請求大于6個且時間超過 5秒服務進程自動增加,隊列等待請求小于3個且時間超過20秒時,服務服務進程自動減少,但實存的進程個數(shù)限制在 MIN和MAX之間。相關的另一個參數(shù)就是UUBconfig中*RESOURCES段的LDBAL,表示是否啟動負載均衡機制,默認是“N"(不啟動),你可以通過設置成“Y"來啟動。這里需要注意的是,為“N"的時候并不表示多個服務進程不能分擔負載。主要的差別是為“Y"時,TUXEDO在接收到請求時會按照它的負載均衡的算法來找到合適的服務進程來處理,而設置成“N"時,總是由***個可用的進程來處理。通過這種方法可以讓多個進程來處理大量并發(fā)的請求,就達到了改善性能的目的。SRVID取值介于SRVID和SRVID+MAX-1,系統(tǒng)自動賦值。