配置后台方法服务器
后台服务器用于处理后台队列。在大多数情况下,对于处理后台队列,只用一个后台方法服务器就已经足够了。有关管理后台队列的信息,请参阅后台队列
但是,可能需要配置多个后台方法服务器以在多个进程之间分布负载。
以下各节将介绍配置后台方法服务器以及设置后台服务器所使用队列组的方法。
配置用于后台队列的方法服务器
wt.properties 文件中设置以下 Windchill 特性,以配置专用于运行后台队列的单独方法服务器:
wt.manager.monitor.start.BackgroundMethodServer=1
wt.queue.executeQueues=false
wt.properties 中设置 wt.queue.executeQueues=false 特性通常会停止队列处理。然后,在后台方法服务器启动命令中包括 wt.queue.executeQueue=true,以确保仅与启动命令关联的后台方法服务器执行队列。
配置多个后台方法服务器
配置多个后台方法服务器包含以下内容:
确定新服务名称,然后为每个后台方法服务器构建相应的启动命令特性。
将每个新服务名称添加到服务器管理器所监视的服务列表中。
要构建后台方法服务器的启动命令特性,您可以使用 wt.manager.cmd.BackgroundMethodServer 特性中的多个默认值,请仅在必要时覆盖默认值,方法是为嵌套在 wt.manager.cmd.BackgroundMethodServer 特性中的特性指定值。使用以下格式为每个新特性命名:
wt.manager.cmd.<service_name>
其中,<service_name> 是新的后台方法服务器的名称。
如果仅使用一个后台方法服务器,则服务名称为 BackgroundMethodServer。在配备了多个后台方法服务器的情况下,命名多个后台服务器的一般 Windchill 约定是附加下划线和数字,第一个服务器从 0 开始。例如,对于三个后台方法服务器的情况,可使用以下名称:
BackgroundMS_0
BackgroundMS_1
BackgroundMS_2
以下特性将设置名称为 BackgroundMS_1 的新后台服务器,它使用 wt.manager.cmd.BackgroundMethodServer 特性中的默认值:
wt.manager.cmd.BackgroundMS_1=$(wt.manager.cmd.BackgroundMethodServer)
wt.manager.cmd.BackgroundMS_1Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)
此外,更改通过 wt.manager.cmd.BackgroundMethodServer 特性建立的以下默认值:
当方法服务器变得无响应时,服务器管理器通常会启动替换方法服务器。但是,如果服务名称为 "BackgroundMethodServer",则不会出现这种情况。使用此服务名称时,服务器管理器将首先确认之前的实例确实已不存在 (而不只是挂起),然后再启动新实例。确认之前的实例已不存在,对于避免可能的数据损坏很重要。要确保仅有一个名为 "BackgroundMethodServer" 的后台方法服务器实例,请设置以下特性:
wt.manager.cmd.BackgroundMS_1.singleton.enforce=true
方法服务器的最大堆大小是在 wt.method.maxHeap 特性中设置的。对于名为 "BackgroundMethodServer" 的服务,此特性会被覆盖。此服务使用在 wt.method.bg.maxHeap 特性中设置的值。要在未命名为 "BackgroundMethodServer" 的后台方法服务器中使用在 wt.method.bg.maxHeap 特性中设置的值,请设置以下特性:
wt.manager.cmd.BackgroundMS_1.param.4=$(wt.method.bg.maxHeap)
或者,可以将每个后台方法服务器的此特性设置为不同值,而不是将其设置为存储在 wt.method.bg.maxHeap 特性中的值。
通过 wt.manager.cmd.BackgroundMethodServer 设置的队列组名称为 Default。将队列组的名称更改为已经为后台方法服务器设置的组名称或名称,方法是设置以下特性:
wt.manager.cmd.BackgroundMS_1.param.5=<list_of_groups>
其中,<list_of_groups> 是以逗号分隔的组名称列表。
将系统配置为使用 BackgroundMethodServer 时,默认情况下,BackgroundMethodServer 将使用 Solr Web 应用程序运行 Embedded Servlet Engine。Solr Web 应用程序会在 Windchill 中运行搜索功能。在整个 Windchill 系统 (包括跨所有群集) 中仅有一个 BackgroundMethodServer 应运行具有 Solr Web 应用程序的 Embedded Servlet Engine。必须禁用所有其他后台方法服务器中的 Embedded Servlet Engine
禁用后台方法服务器中的 Embedded Servlet Engine 可通过将以下特性设置为空值来完成。
wt.manager.cmd.<service_name>.param.12
其中,<service_name> 是后台方法服务器的名称。
例如,如果配置了两个 BackgroundMethodServer:BackgroundMS_0 和 BackgroundMS_1,且 BackgroundMS_0 用于运行 Solr Web 应用程序,则必须设置以下特性来禁用 BackgroundMS_1 中的 Embedded Servlet Engine
wt.manager.cmd.BackgroundMS_1.param.12=
有关队列分组的详细信息,请参阅“对后台方法服务器分布的队列进行分组”一节。请确保将 Default 队列组包括在某个后台方法服务器上。
* 
wt.manager.cmd.BackgroundMethodServer 特性会覆盖 wt.method.minPort 特性值,因此后台方法服务器的最小端口号为 3000。对于单个后台方法服务器,无需更改此值。只有您认为在您的环境中从端口号 3000 开始不合适时,才需要将 wt.manager.cmd.BackgroundMethodServer 端口规范指定为除 3000 以外的其他值。
有关用于构建后台方法服务器的嵌套特性的其他信息,请参阅:properties.html 中的特性说明,位于 <Windchill>/codebase 目录;wt.manager.cmd.MethodServerLauncher 类及其基础类 wt.manager.BaseServerLauncher 的 Javadoc,位于您的 <Windchill>/codebase/wt/clients/library/api 目录。
设置队列组后,使用 xconfmanager 设置和传播每个新后台方法服务器的特性。例如,假设您想要设置如下两个后台方法服务器:
服务名称为 BackgroundMS_0 和 BackgroundMS_1。
仅在 BackgroundMS_0 中设置带有 Solr Web 应用程序的 Embedded Servlet Engine
后台方法服务器的最大堆大小是在 wt.method.bg.maxHeap 中设置的。
队列组命名为 group0 和 group1,其中,group0 将分配给 BackgroundMS_0,group1 和 Default 组将分配给 BackgroundMS_1。
输入下列 xconfmanager 命令:
xconfmanager -s
"wt.manager.cmd.BackgroundMS_0=$(wt.manager.cmd.BackgroundMethodServer)"
-s "wt.manager.cmd.BackgroundMS_0Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)"
-s wt.manager.cmd.BackgroundMS_0.singleton.enforce=true
-s "wt.manager.cmd.BackgroundMS_0.param.4=$(wt.method.bg.maxHeap)"
-s wt.manager.cmd.BackgroundMS_0.param.5=group0
-p
xconfmanager -s
"wt.manager.cmd.BackgroundMS_1=$(wt.manager.cmd.BackgroundMethodServer)"
-s "wt.manager.cmd.BackgroundMS_1Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)"
-s wt.manager.cmd.BackgroundMS_1.singleton.enforce=true
-s "wt.manager.cmd.BackgroundMS_1.param.4=$(wt.method.bg.maxHeap)"
-s "wt.manager.cmd.BackgroundMS_1.param.5=group1,Default"
-s wt.manager.cmd.BackgroundMS_1.param.12=
-p
* 
输入各个命令,每行一个:使用双引号旨在确保 $ 字符被正确读取为变量指示符。在 UNIX 系统上,$ 字符必须使用 \ 字符进行转义。例如:
"wt.manager.cmd.BackgroundMS_0=\$(wt.manager.cmd.BackgroundMethodServer)"
设置新特性后,还必须更新 wt.manager.monitor.services 以包括新后台方法服务器。
例如,要监视方法服务器和两个后台方法服务器,请使用以下 xconfmanager 命令:
xconfmanager -s
wt.manager.monitor.services="MethodServer BackgroundMS_0 BackgroundMS_1" -p
如果要配置高可用性队列处理,请设置两个后台方法服务器来处理同一队列组。例如,假设您想要设置如下三个后台方法服务器:
服务名称为 BackgroundMS_0、BackgroundMS_1 和 BackgroundMS_2。
仅在 BackgroundMS_0 中设置带有 Solr Web 应用程序的 Embedded Servlet Engine
后台方法服务器的最大堆大小是在 wt.method.bg.maxHeap 中设置的。
队列组命名为 group0 和 group1,其中,group0 将分配给 BackgroundMS_0,group1 和 Default 组将分配给 BackgroundMS_1 和 BackgroundMS_2。
输入下列 xconfmanager 命令:
xconfmanager -s
"wt.manager.cmd.BackgroundMS_0=$(wt.manager.cmd.BackgroundMethodServer)"
-s "wt.manager.cmd.BackgroundMS_0Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)"
-s wt.manager.cmd.BackgroundMS_0.singleton.enforce=true
-s "wt.manager.cmd.BackgroundMS_0.param.4=$(wt.method.bg.maxHeap)"
-s wt.manager.cmd.BackgroundMS_0.param.5=group0
-p
xconfmanager -s
"wt.manager.cmd.BackgroundMS_1=$(wt.manager.cmd.BackgroundMethodServer)"
-s "wt.manager.cmd.BackgroundMS_1Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)"
-s wt.manager.cmd.BackgroundMS_1.singleton.enforce=true
-s "wt.manager.cmd.BackgroundMS_1.param.4=$(wt.method.bg.maxHeap)"
-s "wt.manager.cmd.BackgroundMS_1.param.5=group1,Default"
-s wt.manager.cmd.BackgroundMS_1.param.12=
-p
xconfmanager -s
"wt.manager.cmd.BackgroundMS_2=$(wt.manager.cmd.BackgroundMethodServer)"
-s "wt.manager.cmd.BackgroundMS_2Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)"
-s wt.manager.cmd.BackgroundMS_2.singleton.enforce=true
-s "wt.manager.cmd.BackgroundMS_2.param.4=$(wt.method.bg.maxHeap)"
-s "wt.manager.cmd.BackgroundMS_2.param.5=group1,Default"
-s wt.manager.cmd.BackgroundMS_2.param.12=
-p
* 
如果您正考虑配置高可用性队列处理,请参阅在高可用性 Windchill 群集中配置工作器代理以了解详细信息。
对后台方法服务器分布的队列进行分组
通过使用队列分组,可以在后台方法服务器中分布队列。
在将组分配到后台方法服务器后,未分配到任何组的队列将被系统自动分配到 Default 队列组,并在已经分配 Default 组的后台方法服务器上运行。必须将每个队列组至少分配到一个正在运行的方法服务器。如果组未分配到正在运行的后台方法服务器,则不会执行来自该组的队列。
* 
只有在配置高可用性队列处理时,可将同一个组设置为在多个后台方法服务器上运行。
可通过以下任一方式将队列分配到组:
使用“队列管理器”实用程序为组分配队列。组名称中可以包含数字字符。可以为同一组分配一个或多个队列。
按如下所示手动设置特性。
使用以下特性配置队列组:
wt.queue.[queue name]=[group name]
此特性用于将队列分配到组。未给定组名称的队列将自动分配到 Default 组。
以下示例将手动设置两个组。一个组用于执行 WfSharedPropagationQueues 和所有其他队列,另一个组用于执行 WfSharedUserWorkQueue。
设置以下特性以将 WfSharedPropagationQueues 分配给队列组 group0:
wt.queue.WfSharedPropagationQueue1=group0
wt.queue.WfSharedPropagationQueue2=group0
.
.
wt.queue.WfSharedPropagationQueue9=group0
wt.queue.WfSharedPropagationQueue10=group0
设置以下特性以将 WfSharedUserWorkQueues 分配给队列组 group1:
wt.queue.WfSharedUserWorkQueue1=group1
wt.queue.WfSharedUserWorkQueue2=group1
.
.
wt.queue.WfSharedUserWorkQueue9=group1
wt.queue.WfSharedUserWorkQueue10=group1
设置以下特性以将 WfSharedUserWorkQueues 分配给队列组 group1:
wt.queue.WfSharedUserWorkQueue1=group1
wt.queue.WfSharedUserWorkQueue2=group1
.
.
wt.queue.WfSharedUserWorkQueue9=group1
wt.queue.WfSharedUserWorkQueue10=group1
设置嵌入在 wt.manager.cmd 特性中的以下特性,以建立服务器要处理的队列组的列表。此特性的默认值为 Default 队列组。
wt.manager.cmd.<service_name>.param.5=<list_of_groups>
其中,<service_name> 是后台服务器的名称,<list_of_groups> 是以逗号分隔的组名称列表。请确保将 Default 至少包括在一个后台方法服务器中作为一个组的名称。
这对您有帮助吗?