分散トランザクション処理機能 OpenTP1 解説
共用メモリ上にサービス要求を格納する領域(メッセージ格納バッファプール)は,ユーザサーバごとに確保されます。この領域を複数のユーザサーバ間で共用すると,ユーザサーバのスケジュールに使う共用メモリを節約できます。
メッセージ格納バッファプールを共用する場合は,該当するノードに次に示す定義を指定します。
ユーザサービス定義に指定したスケジュールバッファグループ名に該当する名称がスケジュールサービス定義にない場合は,該当するユーザサーバの開始時にエラーになります。
バッファ領域の共用を次の図に示します。
図3-56 バッファ領域の共用
バッファ領域の共用化の指定は,キュー受信型サーバの場合にだけ有効です。ソケット受信型サーバにバッファ領域を共用する指定をしても無視されて,共用しない状態で実行されます。
共用化を指定した複数のユーザサーバのプロセスが同時に起動されると,バッファ領域の競合が起こってスケジュール性能が落ちる場合があります。
バッファ領域を共用化する場合,共用している一部のユーザサーバの処理が遅延したり,大きなデータのサービス要求が格納されたりすると,バッファ領域が圧迫され,ほかのユーザサーバに対するサービス要求がバッファ不足となることがあります。これを防止するために,ユーザサーバごとにバッファの使用サイズを制限することができます。
バッファの使用サイズを制限するには,ユーザサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定します。-sオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何バイトまで格納できるかを指定します。また,-pオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何%まで格納できるかを指定します。
バッファの使用サイズの制限は,キュー受信型SPPの場合にだけ使用できます。MHPでは使用できません。指定した場合は無視されます。
バッファの使用サイズの制限について,scdbufgrp定義コマンドに指定するオプション別に以降の図に示します。
図3-57 バッファの使用サイズの制限(scdbufgrp定義コマンドに-sオプションを指定)
この図では,スケジュールサービス定義を指定して,バッファグループBG1に3072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1,およびSPP2が,それぞれ最大2048バイトまでバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても最大2048バイトまでしか使用できないため,SPP2は残り1024バイトのバッファで動作できます。
図3-58 バッファの使用サイズ制限(scdbufgrp定義コマンドに-pオプションを指定)
この図では,スケジュールサービス定義を指定して,バッファグループBG1に3072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1は最大70%まで,SPP2は最大60%までバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても約70%(2048バイト※)までしか使用できないため,SPP2は残り30%(1024バイト)のバッファで動作できます。
バッファグループに属するサーバUAPで一律に使用サイズを制限する場合,スケジュールサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定することもできます。この場合は,ユーザサービス定義のscdbufgrp定義コマンドには-sオプション,または-pオプションを指定する必要はありません。
スケジュールサービス定義で一律に使用サイズを制限する場合の例を次に示します。図中の番号と以降の説明の番号は対応しています。
図3-59 スケジュールサービス定義で一律に使用サイズを制限する場合の例
共用化したバッファの使用サイズを制限する,スケジュールサービス定義のscdbufgrp定義コマンドの-sオプション,または-pオプションは,ユーザサービスデフォルト定義にも指定できます。しかし,ユーザサービスデフォルト定義に指定した場合,共用バッファではない通常のバッファプール(ユーザサービス定義のmessage_store_buflenオペランドを指定)を使用するユーザサーバが使用できなくなります。
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.