最近我开发了一套系统运行在
tuxedo10 上面,基本的架构是各个柜员客户端软件通过socket连接到应用服务器的socket server上(各种socket server共有4个),客户端转发服务请求包给socket server程序,然后socket server程序以迭代方式(不派生子进程,因为处理时间很短,我设置socket 最多允许100个消息进行排队)逐个处理。 socket server其实是Tuxedo的客户端,用buildclient 构建的,它把从客户端那里接受来的请求进行包装,然后调用TPCALL调用同在一台机器上的Tuxedo服务器上的各个服务,Tuxedo server再去连接数据库,进行各种记帐处理,总体架构就是这样。
总体来说运行很稳定,速度也很快,但是大约每隔10万笔交易就会引发一次Tuxedo的错误,日志如下:
071450.testsvr!?proc.21840.3086219472.0: LIBTUX_CAT:1122: ERROR: No space in Bulletin Board
071450.testsvr!?proc.21840.3086219472.0: LIBTUX_CAT:582: ERROR: Unable to register, registry table full
我Tuxedo的配置文件如下:
*RESOURCES
IPCKEY 123456
DOMAINID appserv
MASTER test1
MAXACCESSERS 30
MAXSERVERS 20
MAXSERVICES 30
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="/bea/tux10/server"
TUXCONFIG="/bea/tux10/server/tuxconfig"
TUXDIR="/bea/tux10"
testsvr LMID=test1
MAXWSCLIENTS=20
*GROUPS
GROUP1
LMID=test1 GRPNO=1 OPENINFO=NONE
GROUP2
LMID=test1 GRPNO=2 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
WSL SRVGRP=GROUP1 SRVID=1 CLOPT="-A -- -n //10.2.3.12:7777 -m 2 -M 2 -x 5"
getdate SRVGRP=GROUP2 SRVID=1 MIN=1 MAX=1
sendmsg SRVGRP=GROUP2 SRVID=2 MIN=1 MAX=1
sna_ses SRVGRP=GROUP2 SRVID=3 MIN=1 MAX=1
checkfs SRVGRP=GROUP2 SRVID=4 MIN=1 MAX=1
pgspace SRVGRP=GROUP2 SRVID=5 MIN=1 MAX=1
*SERVICES
GETDATE LOAD=1
SENDMSG LOAD=1
SNA_SES LOAD=1
CHECKFS LOAD=1
PGSPACE LOAD=1
其实Tuxedo的客户端仅仅是4个以迭代方式运行的socket server,Tuxedo service 也就这么5个,每个service一个server,加上两个其实目前还没用到的WSL server,加上UBBL,总共访问Tuxedo的不过12个server,资源应该够用吧。
--友情转载