分类:
2009-08-22 13:25:08
SERVERS小节】
下面给出一个配置文件中SERVERS小节的示例:
SERVERS
DEFAULT: RESTART=Y MAXGEN=5 GRACE=3600
REPLYQ=
ENVFILE="/usr/home/envfile"
SYSTEM_ACCESS=PROTECTED
RINGUP1 SRVGRP=GROUP1 SRVID=1 MIN=3
RQADDR="ring1"
RINGUP2 SRVGRP=GROUP1 SRVID=4 MIN =3
RQADDR="ring2"
注意:上例中忽略了SEQUENCE(服务启动顺序是1到6),REPLYQ和RPPERM(服务器不接收应答),RCMD(重新启动时无特殊命令),以及CONV(服务器不是会话方式)参数。除非在某个服务器中专门设定,否则缺省值(在DEFAULT段中设置)将被应用到所有的服务器上。
首先在SERVERS小节的入口项中定义服务器名,这个名称是用buildserver创建的可执行文件名。必须为每个服务器提供一个组标识(SRVGRP),这是一个在GROUPS小节中指定的名称。此外,还应改为某个给定组中的每个服务器进程提供一个唯一的数值标识(SRVID)。由于入口项描述的是要被启动的机器而不仅仅是应用,因此有可能同一个服务器名称会出现在多个入口项中。
【服务名、SRVGRP和SRVID参数的特性】
|
|
|
由buildserver创建 服务名是必需的,但是不必唯一 |
(服务器组) |
组名称以一个在GROUPS小节中的入口项开始 这个参数是必需的 |
(服务器ID) |
本参数是必需的,而且在同一个服务器组内应唯一 |
服务器有可能需要从命令行获取信息。CLOPT参数允许你指明可以改变服务器缺省运行方式的命令行选项,或者给tpsvrinit()函数传递用户定义的选项。
服务器的标准main()将命令行选项用参数“--”分成两部分,将剩余的选项部分传递给tpsvrinit()。CLOPT的缺省值是–A,它告诉服务器将buildserver创建到自己内部的所有服务都发布出去。下面的表格列出部分其他可用选项:
|
|
文件名 |
|
文件名 |
|
服务名列表 |
发布服务名列表指定的服务 |
,y,z |
示例:发布x,y和z三个服务 |
funcname |
示例:发布x,y和z三个服务,但是只处理含有函数funcname的服务。这被称为函数名别名(aliasing a function name) |
|
|
【服务器命令行选项】
· 格式为CLOPT="servopts -- application_opts"
· 本参数为可选参数,缺省值为-A
· main()和tpsvrinit()都使用服务器命令行选项
· servopts选项传递给main()
· application options被传递给tpsvrinit()
你可以通过SEQUENCE参数指定服务器启动的顺序,该参数指定一个范围在1到10000之间的数值。被指定较小SEQUENCE数值的服务器比被指定较大SEQUENCE数值的服务器先启动。如果所有的服务器都没有被指定SEQUENCE数值,则服务器以它们在SERVERS小节中出现的先后顺序启动。如果部分服务器被指定了顺序值,部分没有被指定,则指定了SEQUENCE值的服务器先被启动。服务器关闭时的顺序和其启动时相反。
SEQUENCE参数是可选的,在大型的应用中,控制服务器的启动顺序相当重要,此时本参数的使用就非常有益。
使用MIN参数可以启动一个服务器的多个实例,这些实例共享同样的服务器选项。如果指定了RQADDR参数,这些实例将形成一个MSSQ集。MIN的缺省值是1。
通过MAX参数指定一个服务器可以被启动的最大实例数。tmboot命令在运行时启动MIN个服务器实例,如果需要,还可以再启动另外的实例,直到实例总数达到MAX个。MAX的缺省值等于 MIN.
【SEQUENCE、MIN和MAX参数特性】
|
|
|
取值小的服务器先于取值大的服务器启动 没有指定SEQUENCE值的服务器以它们在SERVERS小节中出现的先后顺序启动 指定SEQUENCE值的服务器先于未指定该值的服务器启动 |
|
该参数代表一个服务器在运行时启动的最小实例数 如果指定RQADDR参数并且MIN>1,将建立起一个MSSQ集 所有的实例有同样的服务器选项 MIN的取值范围是0-1000 缺省值是1 |
|
取值范围是0-1000。如果没有指定MAX,其缺省值等于MIN |
在MACHINES小节中使用ENVFILE参数可以指定环境设置,同样可以为某个服务器进程指定这个参数,其含义相同。如果在MACHINES和SERVERS小节中都指定了ENVFILE参数,它们将同时起作用。如果两个文件中相同的变量被定义,则在SERVERS小节中设定的变量将起作用。ENVFILE参数是可选的。
服务器队列信息控制着服务器消息队列的创建和访问。在BEA TUXEDO系统中,可以通过RQADDR参数创建多服务器单队列集(MSSQ set),对于一个服务器,可以赋予一个字母数字值做为此参数的值。提供同样服务的服务器可以让它们的服务共享一个消息队列,从而提供自动负载均衡。通过为MSSQ集中的所有成员指定同样的RQADDR可以做到这点。
【MSSQ示例】
MSSQ集和银行的情况很相似。如果有四个柜员,可以只排一个队,每个柜员在队列中都有均等的等候人。可以理解的是,贷款柜员肯定不包含在这四个柜员中,因为有些顾客并不想在某个给定日期贷款。同样,如果参与其中的服务器提供不同的服务,MSSQ集也是不允许建立的。
通过RQPERM参数可以用UNIX系统惯例指定服务器请求队列的权限(如0666)。这使得服务能够控制对请求队列的访问。
如果MSSQ服务器中的服务例程执行服务请求,这些服务必须在一个应答队列上接收对它们的请求的应答。这一点是通过指定REPLYQ=Y来实现的。在缺省情况下,REPLYQ被设置为N。如果REPLYQ被设置为Y,还可以通过RPERM参数为它设置权限。
【RQADDR、RQPERM、REPLYQ和RPPERM参数特性】
|
特性 |
|
该值对一个MSSQ集中的所有成员相同 一个MSSQ集中的所有服务器成员必须提供同样的服务 |
|
权限将被使用。如果没有赋值,缺省值0666将被使用,这个缺省值使得应用可以被任何登录系统的用户使用[王烜1] |
|
指定是否为本服务器建立一个独立于请求队列的应答队列。如果只有一个服务器使用请求队列,应答可以被从请求队列中挑选出来而不会导致问题。在BEA TUXEDO系统上,如果一个服务器是MSSQ集中的成员并且含有接收应答消息的服务,REPLYQ参数应该被设为Y,以便为此服务器创建独立的应答队列。如果没有创建应答队列,应答将被发送到被所有MSSQ集中所有服务器共享的请求队列中,没有任何方法保证这个应答能被等待它的服务器取出 |
|
设置应答队列权限。只有当REPLYQ=Y时本参数才有用。如果请求和应答读取同一个队列,则只需要设置RQPERM参数,RPPERM将被忽略 |
一个通过正确调试的服务器不应当自己终止运行。在缺省情况下,在应用启动时终止的服务器不会被BEA TUXEDO系统重新启动。如果你希望该服务器重新启动,可以将RESTART参数设置为Y。当RESTART=Y时,RCMD、MAXGEN和GRACE参数都和一个服务器有关。
RCMD指定一个在服务器重新启动时并行执行的命令,这个命令必须是一个可执行文件。这个选项使得管理员在服务器被重新启动时可以采取一些措施,比如可以给服务器的开发者发送邮件。
MAXGEN参数标识一个服务器在GRACE参数指定的时间周期内总共有多少条“命”,因而在GRACE秒内,服务器最多只能被重启动MAXGEN–1次。如果GRACE被设置为零,则服务器的重新启动次数就没有限制。MAXGEN缺省值为1,且不能大于256。GRACE必须大于等于零且不能超过2,147,483,647(231-1)。
【RESTART、RCMD、MAXGEN和GRACE参数特性】
|
|
|
缺省值是N |
|
允许你在某个服务器重新启动时采取某种措施 |
|
缺省值为1;最大值为256 |
|
设置为0表示服务器可以被无限次启动 参数取值在0和 缺省值为24小时 |
如果一个服务器是会话服务器(即此服务器和一个客户端建立一个连接),则必须将此服务器的CONV参数设置为Y。该参数的缺省值为N,表示该服务器不会成为会话的一方。
【CONV参数的特性】
· 取值Y表名服务器是会话型的,取值N表示服务器不是会话型的
· 如果服务器要接收会话请求,必须将CONV参数设为Y
· 缺省值为N
SYSTEM_ACCESS参数绝顶服务器进程是否可以连接到共享内存,从而可以在系统模式之外访问内部表。在应用开发期间,建议禁止这种访问(将参数值设为PROTECTED),在应用进行了全面的测试后,可以将参数值改为FASTPATH以获得更佳性能。
如果在RESOURCES小节中没有指定NO_OVERRIDE参数,SYSTEM_ACCESS将重载在RESOURCES小节中指定的同名参数;在本小节不允许使用NO_OVERRIDE值。
【SYSTEM_ACCESS参数特性】
· 取值PROTECTED表示服务器不能在系统模式之外不能连接到共享内存
· 取值FASTPATH表示服务器无论何时都将连接到共享内存
· 如果在RESOURCES小节指定了NO_OVERRIDE参数,本参数将被忽略
· 缺省值是RESOURCE小节的取值
通过配置文件中的SERVICES小节可以指定BEA TUXEDO服务的信息。这些信息对于无事务、非分布式应用相对简单。SERVICES小节包含下面一些信息:
· 负载均衡信息(SRVGRP)
· 给服务赋予优先级
· 为不同的服务器组指定不同的服务参数
· 缓冲区类型检查信息(BUFTYPE)
【SERVICES小节示例】
下面给出一个配置文件中SERVICES小节的示例:
SERVICES
#
DEFAULT: LOAD=50 PRIO=50
RINGUP BUFTYPE="VIEW:ringup"
在上面的例子中,一个服务的缺省负载和优先级都是50;唯一声明的服务是一个 RINGUP服务,该服务接收一个ringup VIEW做为其所需的缓冲区类型。
如果在RESOURCES小节中指定LDBAL参数的值为Y,就会发生服务器负载均衡。每个被执行的服务都被赋予一个负载因子,该因子追踪每个服务器执行服务的总负载。每个服务请求都被路由到总负载最小的服务器上,这个请求路由使得该服务器的总负载增加,增加的值等于被请求的服务的负载因子大小。
负载信息只存储在发起服务请求的机器上。在一个分布式应用中,如果BEA TUXEDO系统试图不断地将负载信息传播到所有机器,将是非常低效的。当在这样的应用中执行负载均衡时,每个机器只知道自己引起的负载并据此进行负载均衡,着意味着对于同一个服务器(或队列),不同的机器会有不同的负载统计,不同机器上最不繁忙的服务器都不同。
如果没有激活负载均衡,并且有多个服务器提供同样的服务,则第一个可用的队列接收服务请求。
[王烜1]未最后确定