SANITYSCAN12
#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUNIT为单元。
缺省值满足(SCANUNIT*SANITYSCAN)约为120秒。
DBBLWAIT 2
#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUNIT为单元,即超过DBBLWAIT*SCANUNIT(秒)就超时。
每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。
这样可以定时检测死掉或不正常的BBL。
缺省值满足(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最大者。
BBLQUERY30
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUNIT为计算单位。
如果DBBL的状态询问没有回答,该BBL就被‘隔离’了。
缺省值满足(SCANUNIT * BBLQUERY) 约为 300秒。
BLOCKTIME6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间(包括客户端从tpinit到tpterm的等待时间),以SCANUNIT为计算单位。
缺省值满足(SCANUNIT * BLOCKTIME) 约为60秒。
*MACHINES
DEFAULT:
#该部分对各主机进行描述。
unicom2LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
#unicom2, unicom1为网络主机名用hostname获得。
#LMID:
Logical Machines ID 为tuxedo对主机的内部逻辑命名。
#APPDIR要求放置SERVER的可执行文件。
#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。
对于master机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表示可连接client的最大个数。
*GROUPS
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
GROUP1 LMID=unicom2GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3GRPNO=2 OPENINFO=NONE
*SERVERS
#这里描述应用服务器。
SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。
DEFAULT:
CLOPT="-A"
BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log –r -e ./err.log --
-p [L][low_water][,[terminate_time]][:
[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。
控制算法如下:
如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程;如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。
low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100。
create_time 缺省最小是50秒, and terminate_time 缺省最小是60秒。
注意:
使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。
[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。
仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:
1542) ,服务进程也不会增减。
WSLSRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:
8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。
-n 表示出接入点为IP:
PORT方式,-m –M 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。
-T 10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。
*SERVICES
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中说明。
TOUPPER
LOAD=60 // 负载,当LDBAL=Y时有用
PRIO=80// 服务在请求队列中的优先级
TRANSTIME=120 // 交易时间
SVCTIMEOUT=600// 服务超时时间
*NETWORK
#NETWORK节对多机之间如何进行网络连接进行描述。
#cluster方式下要求先启动tlisten。
事实上,对于非master机启动应用服务器是由tlisten完成的。
#tlisten的启动方式为
#unicom1:
tlisten –l //130.36.1.101:
8891
#unicom2:
tlisten –l //130.36.0.102:
8891
#NADDR指定网络连接的接入点。
#NLSADDR则指定tlisten的接入点。
#BRIDGE则指TCP连接所用的设备文件。
unicom2
NADDR="//130.36.0.102:
8899"
NLSADDR="//130.36.0.102:
8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:
8899"
NLSADDR="//130.36.0.101:
8891"
BRIDGE="/dev/streams/xtiso/tcp"
分类总结
TypeParameters requiring tuning
IdentificationTUXCONFIG, UID, GID, IPCKEY, DOMAINID
ThresholdsMAXACCESSERS, MAXSERVERS, MAXSERVICES, MAXGTT, MAXCONV, MAXBUFSTYPE, MAXWSCLIENTS
Time-outsSCANUNIT, SANITYSCAN, DBBLWAIT, BBLQUERY, BLOCKTIME
AvailabilityMASTER, MIGRATE, RESTART, GRACE, MAXGEN, RCMD
MachineTYPE, CMPLIMIT, NETLOAD, SPINCOUNT, TLOGDEVICE, PERM
NetworkNADDR, NLSADDR
ServersCLOPT, ENVFILE
ServicesLOAD, PRIO, BUFTYPE, SVCTIMEOUT
WorkstationsWSNADDR, WSRPLYMAX
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
如:
#Oracle 8i for NT
Oracle_XA;xaosw;%ORACLE_HOME%\RDBMS\XA\ORAXA8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQL8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQX8.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCI.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCIW32.LIB
#Oracle 8i for Unix
Oracle_XA:
xaosw:
-L${ORACLE_HOME}/lib -lclntsh
2.ubb 文件中 *GROUP节加上
TMSNAME=TMS_ORA
TMSCOUNT=3 OPENINFO="Oracle_XA:
Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development's Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle用sys用户登录sqlplus,
a)运行${ORACLE_HOME}/rdbms/Admin/xaview.sql,
b)grant select on v$xatrans$ to public;
c)grant select on dba_pending_transactions to scott;
d)commit;
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA
5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen(), tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
6.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:
TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
7.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.2 SYBASE XA
1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中:
#Sybase_11 for NT
SYBASE_XA_SERVER;sybase_xa_switch;C:
\SYBASE_SERVER\lib\libxasrvlib.lib
2.ubbconfig 文件中的 *GROUP节
TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO=" SYBASE_XA_SERVER:
-Uuserid1 -Ppassword1 -Nconnection2 -Lxa_log -Tall "
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r SYBASE_XA_SERVER
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:
TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.3 INFORMIX XA
1.运行esql -lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中INFORMIX-OnLine:
infx_xa_switch:
${INFORMIXDIR}/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a
2.ubbconfig 文件中
*GROUP节 TMS_NAME=TMS_INFO TMSCOUNT=3 OPENINFO="INFORMIX-OnLine:
test_tux"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:
TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
四、Tuxedo多机方式配置要点
tuxedo多机方式配置有两个方面
4.1启动tlisten
tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为
tlisten -l //hostip:
ipport
1.注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致,最好都用IP地址,以避免双方对同一机器名解释出不同的IP地址。
2. tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.
3.注意各个节点的tlisten都有PASSWORD,存在%APPDIR%\.adm\tlisten.pw文件下,如果那里没有,就读TUXEDO的%TUXDIR%\udataobj\tlisten.pw文件中的内容。
各节点的tlisten password要保证绝对一样(包括回车!
)。
否则会报错:
‘Security Violation’。
4.2 ubb文件配置
对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板
*RESOURCES
IPCKEY80952
MAXACCESSERS40
MAXSERVERS35
MAXSERVICES75
MASTERSITE1,SITE2
OPTIONSLAN,MIGRATE // MIGRATE表示MASTER可以动态迁移
MODELMP// 多机模式
*MACHINES
"PATRICK"LMID="site1"
APPDIR="D:
/Bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="d:
/Bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR=" d:
/Bea /tuxedo"
UID=0
GID=0
TYPE="NT"
MAXWSCLIENTS=5
MAXACCESSERS=40
"test60"LMID="site2"
APPDIR="/bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="/bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR="/bea/tuxedo"
UID=1002
GID=101
TYPE="Sun"
MAXWSCLIENTS=15
MAXACCESSERS=100
*GROUPS
GROUP1 LMID=site1GRPNO=1OPENINFO=NONE
GROUP2 LMID=site2GRPNO=2OPENINFO=NONE
*SERVERS
DEFAULT:
DEFAULT:
RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
WSLSRVGRP=GROUP1 SRVID=20 CLOPT="-A -- -n //10.128.5.201:
9009"
WSLSRVGRP=GROUP2 SRVID=10 CLOPT="-A -- -n //10.128.5.200:
9009"
simpservSRVGRP=GROUP1 SRVID=3
simpservSRVGRP=GROUP2 SRVID=4
*SERVICES
*NETWORK
site1NADDR="//10.128