Tuxedo中有一些关于时间方面的参数,可以做到灵活的配置系统响应超时
1.SCANUNIT :
BBL系统进程对Bulletin Board的管理和监控是基于时间片的轮询方式,时间片的大小就是SCANUNIT的值,SCANUNIT是Tuxedo对系统进行管理的最基本时间单位,其他许多时间方面的参数均是SCANUNIT的倍数。每隔SCANUNIT,BBL对Bulletin Board进行一次检查,看看有无超时的事务或服务请求。SCANUNIT必须是大于0的5的倍数,最大是60,缺省10,单位为秒。
2.BLOCKTIME:
服务请求的超时值,BBL发现有超时的Request时,会给相应的Client端发信息,Client端如果在调用时未加TPNOTIME标记,会报错返回,tperrno值为13。由于BLOCKTIME是以SCANUNIT为单位的,所以时间的绝对值为(BLOCKTIME * SCANUNIT),BLOCKTIME缺省为(60/SCANUNIT)。
3.SANITYSCAN
健全性检查扫描,健全性检查主要检查Server进程状态和Bulletin Board数据结构, BBL检查Server进程是否存活,如果已经不存在,会清理Bulletin Board中相应的数据项及IPC资源,并根据参数配置决定是否重新启动,如果设了RESTART=Y,所占的Message Queue不会被清,Queue中的Request得到保留,仍会被处理。如果是MP模式,BBL还会给DBBL发状态消息。SANITYSCAN缺省为(120/SCANUNIT)。
4.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。
5.SERVICES中的SVCTIMEOUT
如果SERVICE执行时间超过SVCTIMEOUT,BBL会自动将此Server进程Kill掉。
6.SERVICES中的TRANTIME
如果此SERVICE设置了AUTOTRAN=Y,则此值为事务超时值,超时后Transaction Manager会自动RollBack此transaction。
另外
对于Transaction,还可以使用tpbegin(timeout,0)设定超时的时间
其中参数timeout单位为秒,且必须为SCANUINT的倍数。
调用函数后如果超过此时间,系统将返回超时错误。