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 handlers201838.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