Tuxedo基本参数配置说明
⼀、Tuxedo基本命令
#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.编译ubb⽂本⽣成⼆进制配置⽂件:tmloadcf ?Cy ubbconfig
#3.所有机器上运⾏tlisten,具体见⽂档中NETWORK⼀节
#4.启动tmboot ?Cy
#5.关闭tmshutdown ?Cy
参数:
-A 在所有机器上启动/关闭管理的Server进程
-M 只在MASTER机器上启动/关闭管理的Server进程
-i srvid 启动/关闭某个server id指定的Server进程
-
g grpname 启动/关闭某个server group名字指定的Server Group
-S 启动/关闭所有应⽤服务器(LMID)
-s server-name 启动/关闭某个server名字指定的Server进程
-l lmid option 在指定的机器上启动/关闭所有TMS进程和应⽤服务器(LMID)
-T grpname 启动/关闭指定的server group中所有的TMS进程
-B lmid 在指定的机器上启动/关闭BBL进程
-e command 指定⼀个程序可以当在MASTER机器上启动任何⼀个进程失败时执⾏
-c 计算出当前UBB配置的Tuxedo启动最少要占⽤的系统IPC资源
#⽤tmunloadcf > generated.ubb 可以得出⽬前配置得UBB⽂件所有得参数值(没有设置的有缺省值)
#⽤tmloadcf ?Cc或tmboot ?Cc可以计算出当前UBB配置的Tuxedo启动最少要占⽤的系统IPC资源。
⼆、UBB⽂件配置说明
UBB配置⽂件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若⼲节。
DEFAULT表⽰该节中所有对象共有的缺省属性。
*RESOURCES
#RESOUCES节提供整个系统的基本参数。
IPCKEY 55555 (32767-262143)
#进⾏IPC通讯的key值
DOMAINID unicom
#DOMAIN的ID值
MASTER unicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运⾏过程中unicom1若出现问题,管理主机切换⾄unicom2
MAXACCESSERS 1000
#这⾥该值表⽰整个系统中每个机器上可以访问TUXEDO的Client和Server的总数(可以访问 BBL的最⼤进程数),应⼤于license⽤户数+server数(副本应记⼊)。该字段会被MACHINE部分的MAXACCESSERS覆盖。
#系统核⼼参数中SEMAPHORE的数⽬(SEMMNS)要⼤于这⾥的MAXACCESSERS数⽬,⽽ipc消息个数(MSGMAX)应⼤于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。
MAXSERVERS 80
#最⼤的server数(副本应记⼊)
MAXSERVICES 200
#最⼤的service数(多个server重复记⼊)
MAXGTT 20
#系统最多的并发的全局交易数⽬
MODEL MP
#表⽰cluster⽅式,否则为SHM
OPTIONS LAN,MIGRATE
#多机cluster⽅式时必须指定为LAN⽅式,MIGRATE表⽰可以以组为单位进⾏机器间SERVER的迁移。
LDBAL Y
#允许负载均衡
SCANUNIT 10
#SCANUNIT 是BBL在所有服务请求中定期扫描以寻超时的交易和被阻塞德调⽤和德间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位, 它会影响在tpbegin中指定的交易超时时间和⽤BLOCKTIME指定的请求阻塞超时时间的精确程度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等参数都是SCANUNIT的倍数,⽽不是实际秒数。⽽作为时间单位SCANUNIT必须是5的倍数,并且满⾜0<SCANUNIT<60。
SANITYSCAN 12
#SANITYSCAN的值指定在每个MACHINE上BBL⾃动检测所有进程的时间间隔,以SCANUNIT为单元。缺省值满⾜
(SCANUNIT*SANITYSCAN)约为120秒。
DBBLWAIT 2
#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最⼤时间,以SCANUNIT为单元,即超过DBBLWAIT*SCANUNIT(秒)就超时。每⼀次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复⼀个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满⾜(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最⼤者。
BBLQUERY 30
#BBLQUERY指定DBBL对所有BBL进⾏状态检查的时间间隔,它也是以SCANUNIT为计算单位。如果DBBL的状态询问没有回答,该BBL 就被‘隔离’了。缺省值满⾜(SCANUNIT * BBLQUERY) 约为 300秒。
BLOCKTIME 6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间,以SCANUNIT为计算单位。缺省值满⾜(SCANUNIT * BLOCKTIME) 约为60秒。
*MACHINES
DEFAULT:
#该部分对各主机进⾏描述。
unicom2 LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1 LMID=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机tuxconf
ig⽂件是由tmloadcf⽣成的,⽽⾮master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装⽬录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表⽰可连接client的最⼤个数。
*GROUPS
#GROUP1为组名,LMID表⽰该组运⾏的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
GROUP1 LMID=unicom2 GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3 GRPNO=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 ?Cr -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) ,服务进程也不会增减。
WSL SRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL⽤于和client端进⾏连接。-n 表⽰出接⼊点为IP ORT⽅式,-m ?CM 表⽰最⼩和最⼤启动多少个WSH和前端通讯,-x则表⽰⼀个WSH和⼏个client端连接。-T 10表⽰如果client端和server连接后10分钟内没有交易请求则关闭连接。
*SERVICES
#不要求将所有的service在这⾥描述,当某个service有特别参数时才在SERVICE节中说明。
TOUPPER
*NETWORK
#NETWORK节对多机之间如何进⾏⽹络连接进⾏描述。
#cluster⽅式下要求先启动tlisten。事实上,对于⾮master机启动应⽤服务器是由tlisten完成的。
#tlisten的启动⽅式为
#unicom1: tlisten ?Cl //130.36.1.101:8891
#unicom2: tlisten ?Cl //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"
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm⽂件,另外建议运⾏oracle的demo⽂件获得要连接的所有lib库的名称.然后将这些名称全部写在RM⽂件中.
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⼀侧需运⾏xaview.sql,并且scott⽤户有操作权限,运⾏结果会记录trc⽂件⾥.(在oracle8.0.5这⼀步不是必须的)
4.运⾏ buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA
5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC 改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
6.需在ubb⽂件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
7.建⽴TLOG⽂件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运⾏该shell⽂件.
8.启动事务⽤tpbegin(3,0),提交回滚⽤tpcommit/tpabort.
3.2 SYBASE XA
1.在RM⽂件,运⾏sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM⽂件中:Sybase_
XA .
2.ubbconfig ⽂件中 *GROUP节 TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO=""
具体察看Sybase⽂当中xa_open String中提供了解释
3.运⾏ buildtms -o $(TUXDIR)/bin/TMS_SYB -r Sybase_XA
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC 改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb⽂件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
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 改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb⽂件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
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 //host:ipport
注意这⾥的ipport必须和ubb⽂件中NETWORK域的NLSADDR⼀致
tlisten必须在所有的机器上启动,启动后才能运⾏tmboot.建议操作系统启动时就运⾏tlisten.
4.2 ubb⽂件配置
对于多机模式⼀般就是指单⼀domain管理的多台机器,所有机器上仅需要⼀个ubb⽂件,以下是ubb⽂件的模板
*RESOURCES
IPCKEY 80952
MAXACCESSERS 40
MAXSERVERS 35
MAXSERVICES 75
MASTER SITE1,SITE2
OPTIONS LAN,MIGRATE
MODEL MP
*MACHINES
<SITE1´s uname> LMID=SITE1
TUXDIR="<TUXDIR1>"
APPDIR="<APPDIR1>"
TUXCONFIG="<APPDIR1>/tuxconfig"
TYPE="<machine type1>"
ULOGPFX="<APPDIR1>/ULOG"
<SITE2´s uname> LMID=SITE2
TUXDIR="<TUXDIR2>"
APPDIR="<APPDIR2>"
TLOGDEVICE="<APPDIR2>/TLOG"
TLOGNAME=TLOG
TUXCONFIG="<APPDIR2>/tuxconfig"
TYPE="<machine type2>"
ULOGPFX="<APPDIR2>/ULOG"
#
*GROUPS
*NETWORK
SITE1 NADDR="<network address of SITE1>"
BRIDGE="<device of provider1>"
NLSADDR="<network listener address of SITE1>"
SITE2 NADDR="<network address of SITE2>"
BRIDGE="<device of provider2>"
NLSADDR="<network listener address of SITE2>"
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
#
*SERVICES
4.3管理
只能在master机上运⾏tmadmin进⾏管理。要获得统计信息在tmadmin中应运⾏default ?Cm命令。
例如:
tmadmin
>default ?Cm SITE1
>printservice
Windows NT/2000下要注意的问题:
1.由于NT机器上MAXACCESSORS受IPC的限制通常较⼩,因此建议在MACHINES部分单独设置MAXACCESSORS.
2.在MACHINES部分要单独设置UID=0和GID=0
s parameter3.和其他类型的CPU机器互连时,在MACHINES部分⼀定要指定TYPE.否则将提⽰tlisten版本不匹配。
TUXEDO在SERVER和CLIENT之间进⾏数据交换缺省进⾏数据翻译,但⼀个domain的server之间缺省不进⾏数据翻译!
4.tlisten password应该相同.我发现%TUXDIR%udataobj listen.pw中密码相同的条件应将回车考虑在内.
5.有时LANG环境变量⽆法改变为C, 可以在 %TUXDIR%locale创建⽂件夹 mkdir %LANG%.
6.RM⽂件使⽤中发现有效的RM后⼀定要有回车,否则将报RM不存在.
以下是⼀个ubb的例⼦.
*MACHINES
SUN LMID=SITE1
TYPE="SUN"
MAXACCESSORS=10
#here is NT configuration
NT LMID=SITE2
UID=0
GID=0
TYPE="NT"
MAXACCESSORS=10
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论