【LDBAL参数特性】
· 当在RESOURCES小节中将LDBAL参数设为Y时,负载均衡被激活
· 负载是相对于其他服务的
1.1 通过服务优先级控制数据流向
通过PRIO参数可以为服务设置优先级,从而可以控制对应用中的数据流向施加很大的影响。例如,服务1提供A、B和C三个服务。服务A和B的优先级为50,服务C的优先级是70。对服务C的请求总是比对服务A和B的请求先出队列,对服务A和B的请求出队列的机会均等。系统以FIFO顺序从队列中取出每第十个请求,以防止一个消息在队列中无限等待。
【PRIO参数特性】
· 每第十个请求通过FIFO顺序被从队列中取出
1.2 为不同的服务组指定不同的服务参数
可以为不同的服务器组指定不同的负载、优先级或其他有关服务的参数。要做到这点,必须用不同的SRVGRP参数值为每个服务器组重复服务入口项。请参见下面的例子:
SERVICES
A SRVGRP=GRP1 PRIO=50 LOAD=60
A SRVGRP=GRP2 PRIO=70 LOAD=30
上面的示例为两个不同的服务器组指定了不同的服务参数。服务A被给予值为50的优先级,并在服务器组GRP1中有值为60的负载;在服务器组GRP2中,服务A的优先级是70,负载为30。
1.3 为一个服务指定允许使用的缓冲区列表
通过BUFTYPE参数,你可以使得一个服务不依赖服务代码来检查缓冲区类型。在设置这个参数后,它指定一个允许此服务使用的缓冲区的列表。参数的格式是用冒号分隔的缓冲区类型列表:类型[:子类型[,子类型]]。子类型可以被设置为*,以允许所有子类型。
可以将一个服务的BUFTYPE设置为ALL,表示该服务接受所有的缓冲区类型。如果本参数没有被指定,缺省值是ALL。
【BUFTYPE参数示例】
1.4 服务超时错误
有时一个意外的系统错误会使正在处理请求的服务停滞或脱离控制,虽然需要终止这些服务所在的进程,但是却很难发现它们或其来源。BEA TUXEDO的一种机制基于这些进程中一个服务处理请求所用的时间来终止它们。
通过在UBBCONFIG文件中定义SVCTIMEOUT参数或动态改变TM_MIB中的TA_SVCTIMEOUT属性可以配置时间限制。在缺省情况下,BEA TUXEDO系统不会终止任何服务进程,所以必须设置SVCTIMEOUT参数值(以秒为单位)来激活这个特性。建议将SVCTIMEOUT或TA_SVCTIMEOUT值最少设为应用中处理请求耗时最长的服务所需时间的两到三倍。用这种方式设置服务超时保证BEA TUXEDO系统只终止停滞的进程。实质上,服务超时就象是停滞或脱离控制的应用服务器的清道夫。
本部分描述服务超时错误的起因和后果,并解释BEA TUXEDO系统如何报告错误。此外还给出如果处理错误的建议。
1.4.1 导致服务超时的情况
在下面几种情况下会发生服务超时:
· 通常当一个未知或意外的系统错误使服务器进程停滞,或应用代码导致无限循环或递归时,会由于SVCTIMEOUT导致服务超时;
· 服务器进程异常推出并且卸出核心映像(dumps core),通常是是因为应用编码错误;
· 给tpreturn、tpforward、TPRETURN或TPFORWARD传递了错误的参数(应用编码错误);
· 调用tpreturn、tpforward 、TPRETURN或TPFORWARD时有未完成(outstanding)应答(应用编码错误);[王烜1]
· 在调用tpreturn、tpforward、TPRETURN或TPFORWARD时有打开的从属连接(系统编码错误);
· 调用者的事务被标志为"abort-only"
1.4.2 超时发生的后果
当超时发生时,BEA TUXEDO系统终止运行停滞了的服务的服务器进程(但不是其子进程,如果有的话)。接着系统返回一个TPESVCERR错误,表示在处理中发生了一个未知问题。在会话式服务中,返回TPEV_SVCERR会话事件。
1.4.3 如何报告服务超时
在BEA TUXEDO Release 6.4之前,当服务超时发生时,只返回错误码TPESVCERR。但是在Release 6.4加入了三个新的服务超时报告内容:
· TPED_SVCTIMEOUT:
超时错误细节,比tpstrerror 提供更多的信息;
· ULOG中有关.SysServiceTimeout的信息。
由于SVCTIMEOUT的值是可配置的,因此对客户端来说,很重要的一点就是能够简便地识别出可能由于超过SVCTIMEOUT值而引起的TPESVCERR错误与其他情况引起的TPESVCERR错误。虽然在ULOG中包含了这个信息,但是对客户程序来说从文件中提取这些信息很困难。为了区分服务超时导致的TPESVCERR和其他情况导致的TPESVCERR,在检测到TPESVCERR后调用tperrordetail(),如果有服务超时发生,该调用就会产生TPED_SVCTIMEOUT。
此外,在服务超时发生时,还会生成一个.SysServiceTimeout系统事件。当.SysServiceTimeout事件发生时,在ULOG文件中有如下的反映:
ERROR: .SysServiceTimeout: %TA_SERVERNAME, group %TA_SRVGRP, id %TA_SRVID server killed due to a service timeout
1.4.4 如何控制服务超时
· 应用管理员可以通过改变UBBCONFIG文件SERVICES小节的SVCTOMEOUT参数的值,或TM_MIB的T_SERVER或T_SERVICE类的TA_SVCTIMEOUT属性,来控制服务超时。此外,应用管理员还可以通过ULOG文件监测服务超时的发生情况。
· 除了通过ULOG文件监测服务超时的发生情况外,应用管理员可以订阅.SysServiceTimeout事件,这个事件将在服务超时发生时警告应用管理员。
· 应用编程人员可以使用tperrordetial和tpstrerrordetail编程接口,以及TPED_SVCTIMEOUT错误细节码。他们可以增加一个或多个对.SysServiceTimeout系统事件的订阅,该事件在服务超时错误发生时产生。
二 配置路由(Routing)
UBBCONFIG文件的ROUTING小节允许对在SERVICES小节中命名的路由标准(routing criteria)进行全面的定义(针对BEA TUXEDO数据依赖性路由)。
2.1 在ROUTING小节中定义路由标准
对于BEA TUXEDO数据依赖性路由(data-dependent routing),本参数是你在SERIVICES小节中用ROUTING参数指定的路由标准名称 | |
对于BEA TUXEDO数据依赖性路由,这个参数是一个FML域的名称(针对FML缓冲区)或一个VIEW结构成员名称(针对VIEW缓冲区)本参数是被用来路由消息的实际域,它可以是任何数据类型。 | |
SHORT -215 . . . 215 - 1 (16 位) | |
为每个标准赋予的限制,格式为:RANGES="[val1[-val2]:group1] [,val3[-val4]:group2]...[,*:groupn]"。 val1 是一个值;val1-val2 表示一个范围;groupn I是一个组名或通配符(*)代表所有组名。val可以是数字、单引号包含的字符串、MIN或者MAX。在范围中出现的通配符表示Catch-All,也就是说,范围的数字没有限制。[王烜2] | |
表示对于BEA TUXEDO数据依赖性路由所允许的缓冲区类型。 本参数和在SERVICES小节中的同名参数非常相似,它为路由标准限制一套缓冲区类型和子类型。只有FML和VIEW类型可被用于路由。参数的格式也和SERVICES小节中相同,是一个冒号分隔的列表即类型:子类型[,子类型]。只能为路由标准指定一种类型,这个规则限制了能在路由服务中使用的缓冲区类型。 |
2.2 在ROUTING小节中指定范围标准(Range Criteria)
RANGES="[val1[-val2]:group1] [,val3[-val4]:group2]...[,*:groupn]"
其中val1、val2等是是该域的值,而groupn可能是一个组名,也可能是一个通配符(*)表示所有组名都可能被选中。在Val末尾的*字符是一个Catch-All选项,也就是说,它指明当数据不再前面指定的任何范围时该如何处理。val1可能是个数字,也可能是由单引号包括的字符串,取决于该域的类型:当域是数字时,val1为数字;当域为STRING或CARRAY时,val1为字符串。如果域的取值为MIN和MAX(没有引号),则表示允许机器最大和最小数据值(machine minimum and maximum)。指定的范围书目没有限制,但是所有的路由信息都存储在共享内存中,因此回带来内存开销。
注意:范围重叠是允许的,但是重叠部分的数值将被映射到第一个组。例如,如果RANGES参数指定为:
RANGES="0-5:Group1,3-5:Group2"
三 配置网络信息
可以在UBBCONFIG文件的NETGROUPS和NETWORK小节配置网络组(network groups)。
3.1 在NETGROUPS小节中指定信息
UBBCONFIG文件的NETGROUPS小节描述在在局域网环境下应用可用的网络组。对于网络组的个数没有限制,每个网络组可能被分配一对机器。一个网络组不同网络成员之间采用的通讯方法由优先级机制(NETPRIO)决定。
每个LMID都必须是缺省网络组(DEFAULTNET)的成员,这个组的网络组号(即NETGRPNO)必须为零。不过可以更改DEFAULTNET的缺省优先级。
【指定NETGRPNO、NETPRIO、NETGROUP、MAXNETGROUPS和MAXPENDINGBYTES参数】
NETGRPNO、NETPRIO、NETGROUP、MAXNETGROUPS和MAXPENDINGBYTES参数特性如下:
必需/可选 | ||
NETGRPNO = numeric_value | 本参数为一个唯一的网络组号,必须设置此值,以在failover和failback情况下使用。如果本入口项描述的是DEFAULTNET,则数值必须为零。 | |
NETPRIO = numeric_value | ||
NETGROUP = string_value | 所有NETGROUP参数设为DEFAULTNET的网络入口项都被T_MACHINE类代表,而与任何其他NETGROUP有关的NETWORK入口项都被T_NETMAP类代表,以便与以前版本互操作。 | |
允许定义超过缺省值8的更多网络组。 | ||
MAXPENDINGBYTES用来配置等待网络可用的数据大小的最大值。在两种情况下MAXPENDINGBYTES有意义: 可以为有更多内存和磁盘空间的计算机配置较大的,而为较小的计算机配置较小的MAXPENDINGBYTES。 |
3.2 网络组配置示例
可以将网络地址和一个网络组相联系。下面的示例演示这种特性的用途:
某银行有一个含有五台机器(A-E)的网络,每个机器属于两到三个如下定义的网络组:
· GREEN_GROUP(一个私有局域网,提供机器间高速、光纤、点对点连接)
BLUE_GROUP
D E |
C |
A B |
MAGENTA_GROUP |
GREEN_GROUP |
CORPORATE_GROUP |
A 和 B | DEFAULTNET(银行WAN) GREEN_GROUP(LAN) |
DEFAULTNET(银行WAN) MAGENTA_GROUP(LAN) | |
D 和 E | DEFAULTNET(银行WAN) BLUE_GROUP(LAN) |
注意:由于局域网在各位置之间不被路由,所以机器D(在BLUE_GROUP局域网)和机器A(在GREEN_GROUP局域网)只能利用它们共同具有的地址――银行广域网进行通讯。
3.3 配置有网络组的UBBCONFIG文件
为了建立上面所述的配置,该银行的系统管理员在UBBCONFIG文件的NETGROUPS小节定义了各个组,如下所示:
NETGROUPS
DEFAULTNET NETGRPNO = 0 NETPRIO = 100 #缺省
BLUE_GROUP NETGRPNO = 9 NETPRIO = 100
MAGENTA_GROUP NETGRPNO = 125 NETPRIO = 200
GREEN_GROUP NETGRPNO = 13 NETPRIO = 200
NETWORK
A NETGROUP=DEFAULTNET NADDR="//A_CORPORATE:5723"
A NETGROUP=MAGENTA_GROUP NADDR="//A_MAGENTA:5724"
A NETGROUP=GREEN_GROUP NADDR="//A_GREEN:5725"
B NETGROUP=DEFAULTNET NADDR="//B_CORPORATE:5723"
B NETGROUP=MAGENTA_GROUP NADDR="//B_MAGENTA:5724"
B NETGROUP=GREEN_GROUP NADDR="//B_GREEN:5725"
C NETGROUP=DEFAULTNET NADDR="//C_CORPORATE:5723"
C NETGROUP=MAGENTA_GROUP NADDR="//C_MAGENTA:5724"
D NETGROUP=DEFAULTNET NADDR="//D_CORPORATE:5723"
D NETGROUP=BLUE_GROUP NADDR="//D_BLUE:5726"
E NETGROUP=DEFAULTNET NADDR="//E_CORPORATE:5723"
E NETGROUP=BLUE_GROUP NADDR="//E_BLUE:5726"