インストールおよびアップグレード > 高度な展開の検討事項 > 高度な Windchill 設定 > バックグラウンドメソッドサーバーの設定
  
バックグラウンドメソッドサーバーの設定
バックグラウンドサーバーは、バックグラウンドキューを処理するために使用されます。ほとんどの環境で、1 台のバックグラウンドメソッドサーバーがあれば、バックグラウンド照会を処理できます。バックグラウンドキューの管理については、バックグラウンドキューを参照してください。
ただし、複数のプロセスで負荷を分散させるために、複数のバックグラウンドメソッドサーバーを設定する場合があります。
以下のセクションでは、バックグラウンドメソッドサーバーを設定し、バックグラウンドサーバーによって使用されるキューグループを設定する方法について説明します。
バックグラウンドキュー用のメソッドサーバーの設定
バックグラウンドキューの実行用に別のメソッドサーバーを設定するには、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.<サービス名>
ここで、<サービス名> は、新しいバックグラウンドメソッドサーバーの名前です。
バックグラウンドメソッドサーバーを 1 つだけ使用する場合、サービス名は BackgroundMethodServer になります。バックグラウンドメソッドサーバーが複数ある場合の Windchill の一般的な命名規則では、下線と 0 から始まる番号が追加されます。たとえば、バックグラウンドメソッドサーバーが 3 つある場合は、以下の名前を使用できます。
BackgroundMS_0
BackgroundMS_1
BackgroundMS_2
以下のプロパティによって、wt.manager.cmd.BackgroundMethodServer プロパティのデフォルトを使用する、"BackgroundMS_1" という名前の新しいバックグラウンドサーバーを設定します。
wt.manager.cmd.BackgroundMS_1=$(wt.manager.cmd.BackgroundMethodServer)
wt.manager.cmd.BackgroundMS_1Launcher=
$(wt.manager.cmd.BackgroundMethodServerLauncher)
また、wt.manager.cmd.BackgroundMethodServer プロパティによって設定される以下のデフォルトを変更します。
通常、サーバーマネージャは、メソッドサーバーが応答不能になった場合に代替メソッドサーバーを起動します。ただし、サービス名が「BackgroundMethodServer」の場合、起動は行われません。このサービス名が使用されている場合、サーバーマネージャは、新しいインスタンスを起動する前に、前のインスタンスが単に停止しているのでなく、確かに存在しなくなっていることを確認します。前のインスタンスが存在しなくなっていることの確認は、データが破損する危険性を避ける上で重要です。"BackgroundMethodServer" という名前ではないバックグラウンドメソッドサーバーのインスタンスを 1 つだけ使用するには、次のプロパティを設定します。
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 が設定するキューグループ名は、「デフォルト」です。次のプロパティを設定して、このキューグループ名をバックグラウンドメソッドサーバーに設定したグループ名に変更します。
wt.manager.cmd.BackgroundMS_1.param.5=<グループのリスト>
ここで、<グループのリスト> は、コンマ区切りのグループ名リストです。
BackgroundMethodServer を使用するようにシステムが設定されている場合、デフォルトでは、BackgroundMethodServer によって、Solr Web アプリケーションを含む Embedded Servlet Engine が実行されます。Solr Web アプリケーションは Windchill でサーチ機能を実行します。Windchill システム全体 (すべてのクラスタを含む) で 1 つの BackgroundMethodServer だけが、Solr Web アプリケーションを含む Embedded Servlet Engine を 1 つだけ実行します。ほかのバックグラウンドメソッドサーバーの Embedded Servlet Engine はすべて無効にする必要があります。
バックグラウンドメソッドサーバーで Embedded Servlet Engine を無効にするには、以下のプロパティを空の値に設定します。
wt.manager.cmd.<サービス名>.param.12
ここで、<サービス名> は、バックグラウンドメソッドサーバーの名前です。
たとえば、BackgroundMS_0 と BackgroundMS_1 という 2 つの BackgroundMethodServer が設定されており、BackgroundMS_0 を使用して Solr Web アプリケーションを実行している場合、BackgroundMS_1 の Embedded Servlet Engine を無効にするには、以下のプロパティを設定する必要があります。
wt.manager.cmd.BackgroundMS_1.param.12=
キューのグループ化の詳細については、「バックグラウンドメソッドサーバー間で分散するためのキューのグループ化」を参照してください。「デフォルト」キューグループを必ず 1 つのバックグラウンドメソッドサーバーに含めます。
* 
バックグラウンドメソッドサーバーの最小ポート番号が 3000 になるよう、wt.manager.cmd.BackgroundMethodServer プロパティは、wt.method.minPort プロパティの値をオーバーライドします。バックグラウンドメソッドサーバーごとにこの値を変更する必要はありません。使用環境で、ポート番号が 3000 から始まることが不適切であると考えられる場合は、wt.manager.cmd.BackgroundMethodServer のポート指定を変更して、3000 以外の番号をするだけです。
バックグラウンドメソッドサーバーの作成に使用する、ネステッドされたプロパティの詳細情報については、<Windchill>/codebase ディレクトリにある properties.html のプロパティに関する説明、および <Windchill>/codebase/wt/clients/library/api ディレクトリにある wt.manager.cmd.MethodServerLauncher クラスとその基本クラス wt.manager.BaseServerLauncher に関する Javadoc を参照してください。
キューグループを設定した後、xconfmanager を使用して、新しいバックグラウンドメソッドサーバーごとにプロパティを設定し、反映させます。たとえば、以下のような 2 つのバックグラウンドメソッドサーバーを設定するとします。
サービス名 : BackgroundMS_0、BackgroundMS_1
Solr Web アプリケーションを含む Embedded Servlet Engine は BackgroundMS_0 のみで設定されます。
バックグラウンドメソッドサーバーの最大ヒープサイズは、wt.method.bg.maxHeap で設定されます。
"group0" および "group1" という名前のキューグループ。"qroup0" は "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
* 
1 行に 1 コマンドずつ入力します。二重引用符を使用すると、$ 文字が可変指示子として正しく読み取られます。UNIX システムでは、$ 文字を \ 文字でエスケープする必要があります。以下に例を示します。
"wt.manager.cmd.BackgroundMS_0=\$(wt.manager.cmd.BackgroundMethodServer)"
新しいプロパティを設定した後、新しいバックグラウンドメソッドサーバーを含めるように、update wt.manager.monitor.services も更新する必要があります。
たとえば、メソッドサーバーと 2 つのバックグラウンドメソッドサーバーを監視するには、以下の xconfmanager コマンドを使用します。
xconfmanager -s
wt.manager.monitor.services="MethodServer BackgroundMS_0 BackgroundMS_1" -p
可用性の高いキュー処理を設定するには、同じキューグループを処理する 2 つのバックグラウンドメソッドサーバーを設定します。たとえば、以下のような 3 つのバックグラウンドメソッドサーバーを設定するとします。
サービス名: BackgroundMS_0、BackgroundMS_1、BackgroundMS_2
Solr Web アプリケーションを含む Embedded Servlet Engine は BackgroundMS_0 のみで設定されます。
バックグラウンドメソッドサーバーの最大ヒープサイズは、wt.method.bg.maxHeap で設定されます。
"group1" および "group0" という名前のキューグループ。"qroup0" は "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 クラスタでの Worker Agent の設定で詳細を参照してください。
バックグラウンドメソッドサーバー間で分散するためのキューのグループ化
キューのグループ化を使用して、キューをバックグラウンドメソッドサーバー間で分散できます。
グループをバックグラウンドメソッドサーバーに割り当てる際、グループに割り当てられていないキューは、自動的に「デフォルト」キューグループに割り当てられ、「デフォルト」グループが割り当てられているバックグラウンドメソッドサーバー上で実行されます。各キューグループを、1 つ以上の実行中のメソッドサーバーに割り当てる必要があります。グループが、実行中のバックグラウンドメソッドサーバーに割り当てられていない場合、そのグループからのキューは実行されません。
* 
1 つのグループを複数のバックグラウンドメソッドサーバーで実行するように設定するのは、可用性の高いキュー処理を設定する場合のみです。
キューは、以下のいずれかの方法でグループに割り当てることができます。
キューマネージャユーティリティを使用して、キューをグループに割り当てます。グループ名には英数字文字を使用できます。同じグループに 1 つまたは複数のキューを割り当てることができます。
プロパティを以下のように手動で設定します。
以下のプロパティを使用して、キューグループを設定します。
wt.queue.[queue name]=[group name]
このプロパティによってキューがグループに割り当てられます。グループ名の付いていないキューには、「デフォルト」グループが自動的に割り当てられます。
以下の例では、2 つのグループを手動で設定します。1 つは、WfSharedPropagationQueues とその他すべてのキューを実行するもので、もう 1 つは、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 プロパティに組み込まれている以下のプロパティを使用して、サーバーで処理するキューグループのリストを確立します。このプロパティのデフォルト値は、「デフォルト」キューグループです。
wt.manager.cmd.<サービス名>.param.5=<グループのリスト>
<サービス名> はバックグラウンドサーバーの名前で、<グループのリスト> はコンマで区切られたグループ名のリストです。1 つ以上のバックグラウンドメソッドサーバーのグループ名として、Default が必ず含まれているようにします。