1. 程式人生 > >tuxedo錯誤解析和常用配置說明

tuxedo錯誤解析和常用配置說明

tmboot之後的資訊如下:
exec XServer :
 CMDTUX_CAT:1685: ERROR: Application initialization failure
這個服務是一個數據庫的服務,連線用的使用者名稱、密碼、資料庫名字都正確,但還是啟動不了服務。
1685:Server failed to boot due to application initialization failure from tpsvrinit(3c).

ULOG:
CMDTUX_CAT:1685: ERROR: Application initialization failure
201838.dzyh!WSH.882.3086894784.0: 11-17-2008: Tuxedo Version 8.1, 32-bit
201838.dzyh!WSH.882.3086894784.0: LIBTUX_CAT:681: ERROR: Failure to create message queue
201838.dzyh!WSH.882.3086894784.0: WSNAT_CAT:1088: ERROR: tpinit() failed, tperrno = 7
201838.dzyh!WSL.878.3085956800.0: WSNAT_CAT:1079: ERROR: Error starting minimum number of handlers

201838.dzyh!WSL.878.3085956800.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed

原因分析:Linux系統的核心引數msgmni設定太小無法滿足Tuxedo的需求而導致該服務啟動失敗
解決方法:
1.以tmloadcfg -c ubbcfg 所顯示要求的是系統最低的資源要求
2.
root登陸
sysctl -a
kernel.msgmni = 16     (預設值)          //msgmni系統限制引數
kernel.msgmax = 8192 (預設值)

vi /etc/sysctl.conf
#新增
kernel.msgmni = 260
kernel.msgmax = 16384

sysctl -p

tmboot -y

====================================================================================================

1、執行tmadmin命令,出現如下錯誤
NLS:4: Cannot open message catalog TMADMIN_CAT, set 1, num 184; check TUXDIR=/home/dev/app/tuxedo8.1, LANG=zh_CN.GB18030
可以肯定,這個錯誤是由字符集引起的,我用的是簡體中文linux
新增環境變數vi .bash_profile 新增如下內容
export LANG=C


儲存退出,source .bash_profile 使環境變數生效

2、再執行tmadmin,這個錯誤消失,但是出現瞭如下錯誤:
tmadmin - Copyright (c) 1996-1999 BEA Systems, Inc.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by BEA Systems, Inc.
Tuxedo is a registered trademark.
TMADMIN_CAT:188: ERROR: Error while obtaining the Bulletin Board parameters
分析上面的資訊,因為沒有編譯生成TUXCONFIG指向的檔案,即公告牌檔案
經過上面一些配置,已經可以使用tuxedo了,後面配置公告檔案和開發程式都是開發的內容

3、在tuxedo客戶端程式中,呼叫tpinit失敗,返回-1,tperrno=12:internal system error
在用buildclient編譯客戶端程式的時候,如果加入了-w選項,那麼必須設定WSADDR環境變數,如果沒有采用-w選項,那麼預設請求本地的服務。
如果在編譯客戶端程式的時候,採用了-w選項,而又沒有正確設定WSADDR環境變數,那麼tpinit失敗,返回-1,tperrno=12;
    同時UBB中,需要訪問服務所在的組也必須設定WSL選項,如:
    WSL SRVGRP=GROUP1 SRVID=2 MAXGEN=2 CLOPT=" -A -- -n //192.168.1.201:3195 -m 2 -M 6 -x 10"
    同時在*MACHINE節點設定MAXWSCLIENTS=5,MAXWSCLIENTS是最大的WSL client數。
    在客戶端程式執行的時候export WSNADDR=//192.168.1.201:3195,就可以訪問服務了。
如果在編譯客戶端程式的時候,沒有采用-w選項,預設訪問本地的服務,不需要設定WSADDR環境變數。

4.WSL啟動失敗
WSL啟動失敗的原因有很多,比如:UBB中沒配置MAXWSCLIENTS,WSL的埠和別人衝突等等。需要看ULOG才能確定具體原因。

5\tpcall有時莫名的返回-1
tpcall後,不管是否成功,都要釋放memory(上邊tpalloc等函式申請的memory)。然後才能tpterm。

6、啟動服務的時候現實如下的資訊:
CMDTUX_CAT:819: INFO: Process id=1956 Assume started (pipe).
這時需要看一下程式,是否在程式中tpsvrinit函式時已經異常退出。

7、啟動服務tmboot -y的時候出現如下的錯誤資訊:
mboot: WARN: No BBL available on site srd.
        Will not attempt to boot server processes on that site.
注意:該方法錯誤: 去除MACHINES中的TLOGDEVICE="/home/srd/srdapp/bin/TLOG"定義就可以解決。

正確方法如下:

tmadmin登入到管理介面,使用crdl和crlog建立tlog,比如:
> crdl -z /home/tuxedo/logs/tlog -b 2048
> crlog -m simple

8、在啟動tuxedo服務的時候,報如下錯誤資訊:
LIBTUX_CAT:328: ERROR: No space in Bulletin Board for Server Table
ubb中的MAXWSCLIENTS,MAXACCESSERS引數值太小,適當修改這個兩個引數值就可以了.

9、在執行tmloadcf的時候,報如下錯誤:
CMDTUX_CAT:1615: ERROR: Identifier or number must be followed by white space or punctuation
說明某個關鍵字後面需要有空格或者回車,根據錯誤資訊在相應出錯的位置新增空格就可以了。

10、執行tmboot -y啟動服務的時候,報如下錯誤:
TPELIMIT - a system limit has been reached
CMDTUX_CAT:1685: ERROR: Application initialization failure
No space in Bulletin Board for Service Table
有上面的資訊可以看出,是tuxedo配置的一些資源有限制,可以修改ubbconfig配置檔案中的引數 MAXACCESSERS,MAXSERVERS,MAXSERVICES,MAXGTT來申請更多的資源,將上面的引數適當增大知道不出現錯誤資訊為止,具體增加多少根據自己的系統配置和需求決定。

11、WSNAT_CAT:1042:ERROR: tpcall() call failed, tperrno= 6„該資訊的出現是由於被呼叫服務不存在導致,生產系統重啟應用服務程序會導致該資訊出現一級BOSS系統

12、WSL.926452.1.0:WSNAT_CAT:1175: WARN: Disconnecting listener connection to workstation, requesttimed out WSL.926452.1.0: WSNAT_CAT:1175: WARN: Disconnecting listenerconnection to workstation, request timed out WSH.517126.1.0: WSNAT_CAT:1023:WARN: No client context space available in handler

WSH耗盡,重啟釋放資源

13、WSH.12961.1.0: LIBTUX_CAT:1122: ERROR: Nospace in Bulletin Board

   WSH.12961.1.0:LIBTUX_CAT:582: ERROR: Unable to register, registry table full

解決方法:增大MAXACCESSERS值或MAXWSCLIENTS

„     MAXACCESSERS的含義

„     客戶端和服務程序可以同時訪問BB的最大數目

„     MAXACCESSERS>(MAXWSCLIENTS+MAXSERVERS+totalnum(JSH+WSH+ISH))

14、WSNAT_CAT:1287:WARN: Forced shutdown of client

    這個問題主要可能的原因有三個:

   一是Client端由於長時間連線Server,但卻沒有作任何的請求,這時,他會被斷掉;

   二是由於Server在處理Client的請求時,發生超時引起的;

   三是由於在處理Client發起的事務時,超過tpbegin所制定的時間,也會報告這個資訊。這個問題所有tuxedo機器上都有發現。解決辦法:及時斷開連線,增加BLOCKTIME的時間和tpbegin的時間。

15、JSL.7022.1.0: JOLT_CAT:1175: "WARN: Disconnecting listener connection to Jolt client, request timed out"

       可能是JSL服務異常  解決辦法重啟JSL  

      tmshutdown -s JSL     tmboot -s JSL

------------------------------------------------------------------------------------------------------------

1. ubbconfig配置中機器名配置:windows環境中一定要大寫,unix中可用uname -n檢視。
2. tmboot 起不來常與這幾個引數相關,並容易混淆,建議關注。
MAXACCESSERS,MAXSERVERS,MAXSERVICES:這三個引數控制該TUXEDO應用系統對IPC資源的使用情況。
MAXACCESSERS: 在本系統的一個節點(一臺伺服器)上,同時可以有多少個程序可以訪問該TUXEDO系統的公告板,預設值為50,它包括本地客戶端程序,SERVER程序,但不包括管理程序如:BBL,DBBL等。
MAXSERVERS: 在本系統中,總共可以有多少個SERVER存在,包括進行管理的SERVER,如:BBL,TMS等。預設值為50。
MAXSERVICES: 在本系統中,總共可以有多少個SEVICE存在, 預設值為100。
MAXCONV: 在一臺伺服器上最多可以有多少個會話同時存在。範圍:0-32768,預設為10
3. 不同版本的tuxedo互連問題:如果是WSL模式:低聯高版本在WSL中加入-t引數,如CLOPT=”-A -t ??n//機器名:埠號,高聯低版本應在環境變數中設定WSINTOPPRE71=yes;如果是域模式:低聯高版本應該在ubbconfig中的 SERVERS配置GWADM的CLOPT中加入-t引數,例如GWADM   SRVGRP=LGWGRP SRVID=3 REPLYQ=N CLOPT="-A -t -- "
4. 在dmconfig中如果配置了多個域,並且指定遠端域服務時應該指定域服務路由(即遠端服務的本地域是什麼,遠端域是什麼),否則報協議錯誤,例如*DM_REMOTE_SERVICES
SERV_1   LDOM=TDOM1 RDOM=TDOM3 RNAME=SERV_1
SERV_2   LDOM=TDOM1 RDOM=TDOM3 RNAME=SERV_2
5. 使用者用tmadmin進入了管理程序,如果沒有退出,另外使用者用tmadmin進入管理程序,就成為受限管理使用者,部分命令不能使用。
6. Tuxedo Domain-level Failover 的工作特點和配置方式:
特點
當本地domain與主的遠端domain連線失敗時,本地Domain將請求轉發到另一個備份的遠端domain上。支援自動failback。當主 domain恢復正常時,本地domain可以將請求轉發回主domain。CONNECTION_POLICY必須配置成ON_STARTUP或者是 INCOMING_ONLY 。Domain-level要求本地domain與主domain和備份domain之間都建立好socket連線。可以有多個遠端的備份domain

配置方法
在Domain 配置檔案(dmconfig)中的DM_REMOTE_SERVICES處按以下方法配置Service,用逗號分割Service所在的遠端 domain ID,如:RDOM=identifier_1, identifier_2, identifier_3
    *DM_REMOTE_SERVICES
      DEFAULT: RDOM=R1, R2, R3
      TOUPPER
      TOLOWER
    R1是主domain,後面的是備份domain
7. Tuxedo7.1及其以後的版本才正式支援多執行緒環境。在6.5版本,在Windows上有個客戶端的多執行緒附加包,安裝後可以用多執行緒方式併發呼叫服務,而在unix環境下6。5版不支援。
8. 如何在Tuxedo7.1中使用Fprint列印中文,應該配置環境變數 FML_PRINT_NOHEX =yes
9. unix環境下可以通過配置環境變數TUXCONFIG和BDMCONFIG的不同目錄,可以在一個使用者中啟動兩套完全獨立的BBL和兩套應用,並在相應的環境變數下管理相應的應用。
10. 在Tuxedo中有許多關於時間方面的引數,
SCANUNIT :
BBL系統程序對Bulletin Board的管理和監控是基於時間片的輪詢方式,時間片的大小就是SCANUNIT的值,SCANUNIT是Tuxedo對系統進行管理的最基本時間單位,其他許多時間方面的引數均是SCANUNIT的倍數。每隔SCANUNIT,BBL對Bulletin Board進行一次檢查,看看有無超時的事務或服務請求。SCANUNIT必須是大於0的5的倍數,最大是60,預設10,單位為秒。
BLOCKTIME:
服務請求的超時值,BBL發現有超時的Request時,會給相應的Client端發信息,Client端如果在呼叫時未加TPNOTIME標記,會報錯返回,tperrno值為13。由於BLOCKTIME是以SCANUNIT為單位的,所以時間的絕對值為(BLOCKTIME * SCANUNIT),BLOCKTIME預設為(60/SCANUNIT)。
SANITYSCAN
健全性檢查掃描,健全性檢查主要檢查Server程序狀態和Bulletin Board資料結構, BBL檢查Server程序是否存活,如果已經不存在,會清理Bulletin Board中相應的資料項及IPC資源,並根據引數配置決定是否重新啟動,如果設了RESTART=Y,所佔的Message Queue不會被清,Queue中的Request得到保留,仍會被處理。如果是MP模式,BBL還會給DBBL髮狀態訊息。SANITYSCAN預設為 (120/SCANUNIT)。
BBLQUERY
BBL檢查,在MP模式下,DBBL會每隔一段時間檢查是否所有的BBL都發了" I am ok "心跳資訊給自己,如果沒有收到某個BBL的資訊,它會發Request給那個BBL,如果等了DBBLWAIT後仍然沒有回覆,DBBL會認為那臺機器有問題,將其partition。BBL QUERY預設為(300/SCANUNIT),DBBLWAIT預設為(20/SCANUNIT)。BBLQUERY必須大於等於 SANITYSCAN,tmloadcf 時會強制檢查,如果設的值小於SANITYSCAN,tmloadcf會自動調整為SANITYSCAN。

其它和時間相關的引數還有:
WSL [-I init-timeout]
WorkStation Client和後臺建立連線的超時引數值,預設60秒
WSL [-T Client-timeout]
WorkStation Client和WSH建立連線後,如果在指定的時間內沒有資訊互動,WSH會自動釋放和這個Client端的連線,並將此Client在Bulletin Board中的資料項請空,RollBack它未完成的事務 。

WSL [-N network-timeout]
此值實際上是WorkStation Client在做receive時的超時值,如果發生超時,此操作會出錯,WorkStation Client會斷開和後臺的連線。

SERVICES中的SVCTIMEOUT
如果SERVICE執行時間超過SVCTIMEOUT,BBL會自動將此Server程序Kill掉。

SERVICES中的TRANTIME
如果此SERVICE設定了AUTOTRAN=Y,則此值為事務超時值,超時後Transaction
Manager會自動RollBack此transaction

JSL:長連線  

java通過jolt呼叫tuxedo服務ubbconfig配置:

在group  和 server 中新增    JSLGRP  LMID=lw GRPNO = 2              
JREPGRP LMID=lw GRPNO = 3     

JSL SRVGRP=JSLGRP SRVID=301
CLOPT="-A -- -n //192.168.0.166:9878 -M 10 -x 10 -m 2"
JREPSVR SRVGRP=JREPGRP SRVID=302
CLOPT="-A -- -W -P E:/bea/tuxedo9.0/udataobj/jolt/repository/jrepository"

然後配置jrepository檔案。

WSL: 短連線   使用C呼叫tuxedo