【新炬網路名師大講堂】TUXEDO的配置最佳化之路二

shsnchyw發表於2014-12-22

前面講到了ubb中必需部分在配置的時候需要注意的,現在講講可選部分中最重要的SERVERS的配置最佳化。

從管理維護的角度看:serverservice的關係。一個service對應一個server是最簡單的方式,但這會增加server的數量,也就是程式數,使tuxedo系統對系統的IPC資源要求增大,導致系統效能下降;或超過系統限制(UNIX:maxfilesmaxfiles_lim), 導致tuxedo系統無法啟動成功。所以需要把多個service放到一個server中,以降低tuxedo對系統IPC資源的要求。當把一些 service放到一起時,有這麼幾個原則:  

1.有相互呼叫的service不要放到一個server中,以免引起死鎖現象。  

2.執行時間相近的service可以放到一個server中。  

3.同一個server中的service最好有相同的服務優先順序。如果不同,優先順序最低的請求可能要很長時間才得到處理。  

4.一個server中不要有太多的service  

5.把資源要求相近的service放到同一個server中。  

6.可根據業務規則把service放到同一個server中。  

7.把一些使用率較高的service應單獨放在一個server中,並採用MSSQ方式。

 

在預設情況下,TUXEDEO的每一個SERVER對應一個請求佇列,該SERVER從該請求佇列中取客戶端發來的請求,並把處理的結果透過該請求佇列返回給客戶端,這種模式的好處那就是有多個queue可用,有效避免了請求併發量很大時佇列的溢位。

TUXEDOSERVER也可以配置成多個SERVER對應一個請求佇列,即MSSQ方式,以提高響應的速度。用MSSQ時其server的數目不宜太多,官方文件建議212,為避免不必要的資源和排程開銷,通常建議單組服務在8個左右,避免大於10 ;如因併發需要,可採取拆分為多組服務執行的方式。如果相對於請求數來說,處理得不夠快,就比第一種方法更容易造成佇列溢位。

MSSQMulti Server, Single Queue),顧名思義,就是有多份server,但是隻有一個佇列(請求佇列)。使用MSSQ以下兩個引數為必選項:RQADDR是這多個server共用的佇列名,是一種邏輯名,可以自己命名,不和別的衝突就可以,REPLYQ是標示是否設定返回佇列,在使用MSSQ的時候是強烈建議設定,因為這樣可以將請求和返回分開,提高系統吞吐率,避免多個server共用佇列時造成混亂。

不要認為MINMAX的值越大越好,主要取決於資料庫的速度。在硬體資源充足的情況下,建議所有SERVER都設定MIN數量與MAX數量相等,以避免動態啟停服務帶來的各種問題。那麼MINMAX到低配置成多少才是比較合理的,既不會因為配置數不夠導致阻塞,也不會因為配置過多導致資源空閒。

最佳化的一個重要的參考依據就是TUXEDO效能跟蹤檔案(預設檔名為stderr)中記錄的每個service的呼叫次數及呼叫時間。在配置檔案的CLOPT中設定“-r”引數後,每次呼叫該service都會在恨不能跟蹤檔案中記錄一行記錄。效能跟蹤檔案可以使用TUXEDO提供的TXRPT命令進行分析,可以統計出每個service在每段時間內的總呼叫次數和平均時間。現在我們來看一下效能跟蹤檔案裡的資料應該怎麼分析。

根據效能跟蹤檔案stderr,按一定的時間段分析效能資料,時間段(time)可根據需要設定,每分鐘一條記錄,每小時一條記錄都可以。那麼我們就可以得到一條以下記錄,包括:service nameNum(時間段內的呼叫次數)Duration(時間段內內所有呼叫的執行總時長),再透過PSC對應serverservice的關係,及算出server的程式數(MIN)。結合以上資料得出每個server下每個service1鍾內所有呼叫的總時長(Efficiency)。time單位為秒。

Efficiency=Duration/NUM/MIN/time

每個server下所有serviceEfficiency求和超過1秒錶示在1秒內server所有呼叫未在1秒內執行完,可能會造成請求排隊或效能問題。

每個server下所有serviceEfficiency求和接近1秒錶示serveridle較低,沒有足夠的空閒處理能力,可能會造成在與業務增長時請求排隊或效能問題。

每個server下所有serviceEfficiency求和低於1秒錶示server有足夠的idle有一定的冗餘處理能力,那這個值就是我們最佳化的目標。

如果單個serviceEfficiency值過大,表示單次呼叫的響應過長,影響使用者體驗,需要對service呼叫時長進行最佳化。

當一個SERVER程式因某中原因死掉時,可設定RESTART讓它可以自動重起,預設為N(不可以)。但光設定了RESTART=Y還不夠,還要設定GRACE,MAXGEN才能在該SERVER死掉時,自動重起,GRACEMAXGEN:在GRACE秒內,該程式最多可以重啟MAXGEN次。注意,該SERVER能夠被自動重起的一個前提條件時它還沒有被從BULLITION BOARD中清除。

如果SERVER採用會話(CONVERSATION)通訊方式,注意採用會話通訊方式的SERVICE要單獨在一個SERVER,不能與採用其他通訊方式的SERVICE在同一個SERVER,並且該SERVER要設定CONV=Y

WSL配置中-x引數定義的是同一個WSH上最多能有多少個客戶端請求排隊,該值過大會引發大量的客戶端超時,建議將調整到20左右或更小。

不同版本的tuxedo互連問題:如果是WSL模式:低聯高版本在WSL中加入-t引數,如CLOPT=”-A – n//機器名:埠號,高聯低版本應在環境變數中設定WSINTOPPRE71=yes;如果是域模式:低聯高版本應該在ubbconfig中的SERVERS配置GWADMCLOPT中加入-t引數,例如GWADM   SRVGRP=LGWGRP SRVID=3 REPLYQ=N CLOPT=”-A -t – ”

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1376277/,如需轉載,請註明出處,否則將追究法律責任。

相關文章