Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 システム定義


クライアントサービス定義

〈このページの構成〉

形式

set形式

〔set parallel_count=常駐プロセス数〔,最大プロセス数〕〕
〔set balance_count=1プロセスが処理するサービス要求数〕
〔set trn_expiration_time=トランザクションブランチ限界経過時間〕
〔set trn_expiration_time_suspend=Y|N|F〕
〔set trn_cpu_time=トランザクションブランチCPU監視時間〕
〔set open_rm=OpenTP1_ALL|OpenTP1_NONE〕
〔set clt_inquire_time=常設コネクション問い合わせ間隔最大時間〕
〔set clt_port=クライアント拡張サービスのポート番号〕
〔set clt_trn_conf=Y|N〕
〔set clt_cup_conf=Y|N〕
〔set cup_parallel_count=常駐プロセス数〔,最大プロセス数〕〕
〔set cup_balance_count=サービス要求滞留値〕
〔set clttrn_port=トランザクショナルRPC実行プロセスのポート番号〕
〔set cltcon_port=CUP実行プロセスのポート番号〕
〔set trn_statistics_item=統計情報項目〔,統計情報項目〕…〕
〔set trn_optimum_item=トランザクション最適化項目
                    〔,トランザクション最適化項目〕…〕
〔set trn_watch_time=トランザクション同期点処理時の最大通信待ち時間〕
〔set trn_rollback_information_put=no|self|remote|all〕
〔set trn_limit_time=トランザクションブランチ最大実行可能時間〕
〔set trn_rollback_response_receive=Y|N〕
〔set trn_partial_recovery_type=type1|type2|type3〕
〔set trn_completion_limit_time=トランザクション完了限界時間〕
〔set message_store_buflen=メッセージ格納バッファプール長〕
〔set watch_time=最大応答待ち時間〕

コマンド形式

なし。

機能

OpenTP1のクライアント機能を支援するためのサーバの実行環境を定義します。

CUPからトランザクションを起動するときに次のオペランドを指定します。

説明

set形式のオペランド

parallel_count=常駐プロセス数〔,最大プロセス数〕

 〜〈符号なし整数〉((1〜1024))《1》

CUP(サーバ側で同時に処理される)から起動するトランザクションの数を指定します。常駐プロセス数を指定すると,OpenTP1起動時に指定した数の実行プロセスが一緒に起動され,常にCUPからのトランザクションの開始要求を受け付ける状態になります。複数のCUPからトランザクションの開始要求を受け付けたときは,並行して処理するので処理性能が向上します。

最大プロセス数を指定すると,常駐プロセス数を超える処理は非常駐プロセスを動的に起動して処理します。指定した最大プロセス数以内でサーバプロセスの起動を制御するため,OpenTP1システムの性能が低下するのを防ぎます。

プロセス数の指定条件を次に示します。

  1. 常駐プロセス数と最大プロセス数は1以上の値を指定します。

  2. 最大プロセス数を指定する場合は,常駐プロセス数以上の値を指定します。

  3. 最大プロセス数を省略した場合は,すべてのプロセスが常駐プロセスとなります。

  4. すべてのプロセスを非常駐プロセス(必要に応じて起動)とすることはできません。

balance_count=1プロセスが処理するサービス要求数

 〜〈符号なし整数〉((0〜512))《3》

このユーザサーバに対応するスケジュールキューに,処理されないで残っているサービス要求を,1プロセスで幾つ処理させるかを指定します。サービス要求が,(このオペランドの指定値)×(起動プロセス数)を超えてスケジュールキューに残っている場合には,非常駐プロセスを起動してサービス要求を処理させます。このオペランドは,parallel_countオペランドで非常駐プロセスを起動するように指定したサービスグループにだけ有効です。

0を指定すると,サービス要求のあった時点で起動されているすべてのプロセスがサービス処理中の場合,非常駐プロセスが起動されます。

trn_expiration_time=トランザクションブランチ限界経過時間

 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

トランザクションブランチの処理を監視する限界経過時間を指定します。CUPからトランザクションを起動したあとに,指定時間を経過してもトランザクションのコミットまたはロールバックの指示がない場合は,このトランザクションブランチのプロセスが異常終了して,ロールバックします。

なお,このオペランドは,クライアント環境定義のDCCLTTREXPTMオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

なお,RPC機能を使用した場合に,他プロセスで実行するトランザクションブランチの処理時間も監視時間に含むかどうかは,trn_expiration_time_suspendオペランドで指定してください。

trn_expiration_time_suspend=Y|N|F

 〜《N》

トランザクションブランチの処理を監視するとき,次の処理時間も監視時間に含むかどうかを指定します。

  1. 監視対象のトランザクションブランチが,RPC機能を使ってほかのトランザクションブランチを呼び出し,その処理が終わるのを待つ時間

  2. 連鎖RPCで呼び出されたサーバUAPが次のサービス要求を待つ時間

  3. 監視対象のトランザクションブランチが,非同期RPCを使用してほかのトランザクションブランチを呼び出したあと,処理結果受信処理を行っている時間

Y

1.,2.,3.のすべてを監視時間に含みます。

N

3.だけを監視時間に含みます。

F

1.,2.,3.のどれも監視時間に含みません。

なお,このオペランドは,クライアント環境定義のDCCLTTREXPSPオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

このオペランドと各種タイマ監視との関係については,「付録A.2 トランザクションの時間監視」を参照してください。

trn_cpu_time=トランザクションブランチCPU監視時間

 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

トランザクションブランチが同期点処理までに使用できるCPU時間を指定します。0を指定した場合は,時間監視しません。指定時間を超えた場合は,該当するトランザクションブランチのプロセスを異常終了し,ロールバックします。

なお,このオペランドは,クライアント環境定義のDCCLTTRCPUTMオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

open_rm=OpenTP1_ALL|OpenTP1_NONE

 〜《OpenTP1_NONE》

CUPからのトランザクショナルRPC機能を使用した場合に,クライアントサービス実行プログラムがオープンするリソースマネジャの名称を指定します。これによって,CUPからのトランザクショナルRPC機能で同期点処理が最適化できるようになり,トランザクションの性能が向上します。

このオペランドを指定すると,parallel_countオペランドに指定したプロセス数の分だけ,リソースマネジャの資源を占有します。

指定できるリソースマネジャ名を次に示します。

OpenTP1_ALL

OpenTP1開始時,クライアントサービス実行形式プログラムで,OpenTP1が提供するリソースマネジャのうち,OpenTP1に登録されているすべてのリソースマネジャに対してオープン処理を実行します。

OpenTP1_NONE

OpenTP1開始時,クライアントサービス実行形式プログラムで,リソースマネジャに対してオープン処理を実行しません(同期点処理が最適化できません)。

clt_inquire_time=常設コネクション問い合わせ間隔最大時間

 〜〈符号なし整数〉((0〜1048575))《180》(単位:秒)

CUPがサーバに対して問い合わせをしてから,次の問い合わせをするまでの間隔の最大時間を指定します。

常設コネクション問い合わせ間隔最大時間は,CUP実行プロセスで監視するタイマであり,指定時間を超えても問い合わせがない場合,CUP実行プロセス側で強制的に常設コネクションを解放します。

また,トランザクション内で常設コネクション問い合わせ間隔最大時間の満了を検出した場合は,該当するトランザクションをロールバックします。

0を指定すると,CUPからの問い合わせを無限に待ちます。

なお,このオペランドは,クライアント環境定義のDCCLTINQUIRETIMEオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

clt_port=クライアント拡張サービスのポート番号

 〜〈符号なし整数〉((5001〜65535))

クライアント拡張サービスのポート番号を指定します。

他システムサーバで使用しているウェルノウンポート番号と異なるポート番号を指定してください。

このオペランドを省略した場合,システム共通定義のrpc_port_baseオペランドが指定されていれば,rpc_port_baseの指定値から「rpc_port_baseの指定値+prc_process_countの値」の範囲のポート番号が任意に割り当てられます。rpc_port_baseオペランドの指定がない場合には,システムが任意に割り当てたポート番号を使用します。

このオペランドで指定するポート番号は,ほかのプログラムと重複しないようにしてください。

また,OSには任意に割り当てる番号がありますが,この番号も使用しないでください。OSが任意に割り当てる番号は,OSの種別やバージョンによって異なります。詳細については,使用しているOSのマニュアルを参照してください。

clt_trn_conf=Y|N

 〜《Y》

自OpenTP1ノードで,トランザクショナルRPC実行プロセスを起動するかどうかを指定します。このオペランドを省略,またはYを指定した場合,parallel_countで指定されたプロセス数分のトランザクショナルRPC実行プロセスが起動されます。

clt_cup_conf=Y|N

 〜《N》

自OpenTP1ノードで,CUP実行プロセスを起動するかどうかを指定します。このオペランドでYを指定した場合,cup_parallel_countで指定されたプロセス数分のCUP実行プロセスが起動されます。

CUPからdc_clt_connect関数,またはdc_clt_connect_s関数などで常設コネクションを確立したい場合は,Yを指定してください。

cup_parallel_count=常駐プロセス数〔,最大プロセス数〕

 〜〈符号なし整数〉((1〜1024))《1》

CUP(サーバ側で同時に処理される)から確立される常設コネクションの数を指定します。

常駐プロセス数を指定すると,OpenTP1起動時に指定した数のCUP実行プロセスが一緒に起動され,常にCUPからの常設コネクション確立要求を受け付ける状態になります。複数のCUPから常設コネクション確立要求を受け付けた時は,並行して処理するので,処理性能が向上します。

最大プロセス数を指定すると,常駐プロセス数を超える処理は非常駐プロセスを動的に起動して処理します。指定した最大プロセス数以内でサーバプロセスの起動を制御するため,OpenTP1システムの性能が低下するのを防ぎます。

プロセス数の指定条件を次に示します。

  1. 常駐プロセス数と最大プロセス数は1以上の値を指定します。

  2. 最大プロセス数を指定する場合,常駐プロセス数以上の値を指定します。

  3. 最大プロセス数を省略した場合,すべてのプロセスが常駐プロセスとなります。

  4. すべてのプロセスを非常駐プロセス(必要に応じて起動)とすることはできません。

一方,クライアントサービス定義のparallel_countオペランドは,トランザクショナルRPC実行プロセスの常駐プロセス数および最大プロセス数を指定します。

cup_balance_count=サービス要求滞留値

 〜〈符号なし整数〉((0〜512))《3》

処理されないで残っている常設コネクション確立要求数の滞留値を指定します。

CUPから常設コネクション確立要求を受け付け,その要求をスケジュールキューに登録後,コネクション確立要求がこのオペランドの指定値を超えると,スケジュール機能が非常駐プロセスを起動して,常設コネクション確立要求を処理します。このオペランドは,cup_parallel_countオペランドで最大プロセス数を指定した場合だけ有効です。

0を指定すると,常設コネクション確立要求のあった時点で起動されているすべてのプロセスがCUPとの常設コネクションを確立していた場合,非常駐プロセスが起動されます。

一方,クライアントサービス定義のbalance_countオペランドは,トランザクショナルRPC実行プロセスのサービス要求滞留値を指定します。

clttrn_port=トランザクショナルRPC実行プロセスのポート番号

 〜〈符号なし整数〉((5001〜65535))

トランザクショナルRPC実行プロセスのポート番号を指定します。

他システムサーバで使用しているウェルノウンポート番号と異なるポート番号を指定してください。

このオペランドを省略した場合,システム共通定義のrpc_port_baseオペランドが指定されていれば,rpc_port_baseの指定値から「rpc_port_baseの指定値+prc_process_countの値」の範囲のポート番号が任意に割り当てられます。

rpc_port_baseオペランドの指定がない場合には,システムが任意に割り当てたポート番号を使用します。

ここで指定したポート番号から,parallel_countオペランドで指定した数がポート番号として割り当てられます。したがって,このオペランドの指定値とparallel_countオペランドの指定値の和が,65535を超えないように注意してください。

このオペランドで指定するポート番号は,ほかのプログラムと重複しないようにしてください。

また,OSには任意に割り当てる番号がありますが,この番号も使用しないでください。OSが任意に割り当てる番号は,OSの種別やバージョンによって異なります。詳細については,使用しているOSのマニュアルを参照してください。

cltcon_port=CUP実行プロセスのポート番号

 〜〈符号なし整数〉((5001〜65535))

CUP実行プロセスのポート番号を指定します。

他システムサーバで使用しているウェルノウンポート番号と異なるポート番号を指定してください。

このオペランドを省略した場合,システム共通定義のrpc_port_baseオペランドが指定されていれば,rpc_port_baseの指定値から「rpc_port_baseの指定値+prc_process_countの値」の範囲のポート番号が任意に割り当てられます。

rpc_port_baseオペランドの指定がない場合には,システムが任意に割り当てたポート番号を使用します。

ここで指定したポート番号から,cup_parallel_countオペランドで指定した数がポート番号として割り当てられます。したがって,このオペランドの指定値とcup_parallel_countオペランドの指定値の和が,65535を超えないように注意してください。

このオペランドで指定するポート番号は,ほかのプログラムと重複しないようにしてください。

また,OSには任意に割り当てる番号がありますが,この番号も使用しないでください。OSが任意に割り当てる番号は,OSの種別やバージョンによって異なります。詳細については,使用しているOSのマニュアルを参照してください。

trn_statistics_item=統計情報項目〔,統計情報項目〕…

 〜《executiontime》

トランザクションブランチの統計情報を取得する項目を指定します。

nothing

統計情報を取得しません。

base

基本情報として,次の情報を取得します。

  • トランザクションブランチの識別子

  • トランザクションブランチの決着結果

  • トランザクションブランチの実行プロセス種別

  • トランザクションブランチの実行サーバ名

  • トランザクションブランチの実行サービス名

executiontime

基本情報とトランザクションブランチの実行時間情報を取得します。

cputime

基本情報とトランザクションブランチのCPU時間情報を取得します。

nothingの指定は,一つしかできません。また,nothingとほかの統計情報項目を同時に指定した場合,nothingの指定は無効になります。

トランザクションに関する統計情報を取得するときは次のどれかを指定してください。

  • トランザクションサービス定義のtrn_tran_statisticsオペランドにYを指定

  • trnsticsコマンドで-sオプションを指定

なお,このオペランドは,クライアント環境定義のDCCLTTRSTATISITEMオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_optimum_item=トランザクション最適化項目〔,トランザクション最適化項目〕…

 〜《base》

複数のユーザサーバで構成されるグローバルトランザクションの性能を向上させるための最適化項目を,次の文字列で指定します。

base

同期点処理全体(プリペア処理,コミット処理,およびロールバック処理)を最適化します。OpenTP1のトランザクション制御は2相コミット方式で実行しているため,二つのトランザクションブランチ間のコミット制御には,4回のプロセス間通信が必要となります。

次の条件をすべて満たす場合,親トランザクションブランチが子トランザクションブランチのコミット処理を代わりに実行することで,コミット制御で必要な4回のプロセス間通信を削減します。

  1. 親トランザクションブランチと,子トランザクションブランチが同一OpenTP1下にあること。

  2. 親トランザクションブランチが,子トランザクションブランチを同期応答型RPCで呼び出していること。

  3. 子トランザクションブランチでアクセスしたリソースマネジャのXAインタフェース用オブジェクトが,親トランザクションブランチにもリンケージされていること。

asyncprepare

baseの指定条件を満たしていないため同期点処理全体の最適化ができない場合に,プリペア処理を最適化します。

次の条件をすべて満たす場合,親トランザクションブランチから発行されたRPCによって子トランザクションブランチがサービス要求を実行したときに,RPCのリターン前にプリペア処理を実行することで,2回のプロセス間通信を削減します。

  1. baseを指定した最適化ができないこと。

  2. 親トランザクションブランチが,子トランザクションブランチを同期応答型RPCで呼び出していること。

    ただし,この最適化を実行した場合,親トランザクションブランチが発行した同期応答型RPCの応答時間が遅くなります。また,子トランザクションブランチは,プリペア処理からコミット処理までの間隔(親トランザクションブランチからの支持がないとトランザクションを決着できない状態)が大きくなります。そのため,親トランザクションブランチのOpenTP1がシステムダウンし,トランザクションブランチ間の連絡ができなくなると,ジャーナルファイルのスワップやチェックポイントダンプファイルの有効化が遅れ,子トランザクションブランチのOpenTP1もシステムダウンする場合があります。

トランザクション最適化項目は,重複して指定できます。ただし,優先順位は次のようになります(1.>2.)。

  1. base

  2. asyncprepare

なお,このオペランドは,クライアント環境定義のDCCLTTROPTIITEMオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_watch_time=トランザクション同期点処理時の最大通信待ち時間

 〜〈符号なし整数〉((1〜65535))《120》(単位:秒)

トランザクションの同期点処理で,トランザクションブランチ間で行う通信(プリペア,コミット,ロールバック指示,または応答など)の受信待ち時間の最大値を指定します。

指定時間を過ぎても指示または応答がない場合は,該当するトランザクションブランチが2相コミットの1相目完了前であればロールバックさせ,1相目完了後であればトランザクションサービスのシステムプロセスでトランザクション決着処理を再試行します。

なお,このオペランドは,クライアント環境定義のDCCLTTRWATCHTIMEオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_rollback_information_put=no|self|remote|all

 〜《no》

トランザクションブランチがロールバックした場合に,ロールバック要因に関する情報をログに取得するかどうかを指定します。

no

ロールバック情報を取得しません。

self

ロールバック要因が発生したトランザクションブランチでだけ,ログにロールバック情報を取得します。

remote

selfに加え,他ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも,ログにロールバック情報を取得します。

all

remoteに加え,自ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも,ログにロールバック情報を取得します。

なお,このオペランドは,クライアント環境定義のDCCLTTRRBINFOオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_limit_time=トランザクションブランチ最大実行可能時間

 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

トランザクションブランチの最大実行可能時間を指定します。

トランザクションブランチを開始してから同期点処理が終了するまでの時間が,このオペランド指定時間を超えないようにdc_rpc_call関数,dc_rpc_poll_any_replies関数および同期点処理内で行う通信のタイムアウト時間を次のように自動設定します。

  • dc_rpc_call関数およびdc_rpc_poll_any_replies関数のタイムアウト時間

    「K≧このオペランド指定時間」の場合は,要求処理を実行しないで,タイムアウトでエラーリターンします。

    「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)≧W」の場合は,Wをタイムアウト時間とします。

    「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)<W」の場合は,(このオペランド指定時間−K)をタイムアウト時間とします。

    K

    現時刻−トランザクションブランチ開始時刻

    W

    dc_rpc_call関数の場合はwatch_timeオペランド指定時間

    dc_rpc_poll_any_replies関数の場合は引数timeout指定時間

  • 同期点処理内で行う通信のタイムアウト時間

    「K≧このオペランド指定時間」の場合は,タイムアウト時間を1秒とします。

    「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)≧W」の場合は,Wをタイムアウト時間とします。

    「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)<W」の場合は,(このオペランド指定時間−K)をタイムアウト時間とします。

    K

    現時刻−トランザクションブランチ開始時刻

    W

    trn_watch_timeオペランド指定時間

    trn_watch_timeオペランドを省略した場合はwatch_timeオペランド指定時間

上記の受信待ち以外の処理で時間が掛かった場合は,このオペランド指定時間以内にトランザクションブランチが終了しないことがあります。

同期点処理開始前にこのオペランドの指定時間が経過した場合,そのトランザクションはロールバックします。

0を指定した場合は,時間監視をしません。

なお,このオペランドは,クライアント環境定義のDCCLTTRLIMITTIMEオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_rollback_response_receive=Y|N

 〜《Y》

RPC先トランザクションブランチにロールバック指示を送信したあと,ロールバック完了通知を受信するかどうかを指定します。Nを指定した場合,RPC先トランザクションブランチからのロールバック完了通知を受信しないで(RPC先トランザクションブランチのロールバック処理の完了を待たないで)自トランザクションブランチを終了します。

なお,このオペランドは,クライアント環境定義のDCCLTTRRBRCVオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_partial_recovery_type=type1|type2|type3

 〜《type1》

UAP障害時のトランザクション同期点処理方式を指定します。

クライアントサービス定義でこのオペランドを指定する場合は,CUPからトランザクションを開始する場合だけに有効です。

RPCがタイムアウトし,RPC発行先プロセスのアドレスが未解決の場合やトランザクション実行中のUAPがダウンした場合に,トランザクションブランチ間の連絡がスムーズにできないで,トランザクションの決着に時間が掛かることがあります。

このオペランドでは,次に示す障害が発生した場合のトランザクション同期点処理方式を,指定値に示す三つの方式から選択して指定します。

(障害1)RPCがタイムアウトした場合

この場合,RPC発行元トランザクションブランチは,サービス要求がどのプロセスで実行されているかがわからないため,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチがトランザクション同期点メッセージ待ちとなり,トランザクションの決着に時間が掛かります。

(障害2)RPC発行元UAPがRPCの応答受信前にダウンした場合

この場合,RPC発行元トランザクションブランチは,サービス要求がどのプロセスで実行されているかがわからないため,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで,RPC発行先トランザクションブランチはトランザクション同期点メッセージ待ちとなり,トランザクションの決着に時間が掛かります。

(障害3)RPC発行先UAPからの応答受信後にRPC発行元UAPとRPC発行先UAPがほぼ同時にダウンした場合

この場合,それぞれのトランザクションブランチを引き継いだトランザクション回復プロセスは,相手UAPプロセスのダウンを知らないため,すでに存在しないUAPプロセスにトランザクション同期点メッセージを送信してしまい,トランザクションの決着に時間が掛かることがあります。

type1

(障害1)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。

(障害2)が発生した場合,RPC発行元トランザクションブランチは,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信しないでトランザクションを決着します。RPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。

(障害3)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。

type2

(障害1)が発生してトランザクションをコミットする場合はtype1と同じです。

(障害1)が発生してトランザクションをロールバックする場合,または(障害2)が発生した場合は,RPC発行元トランザクションブランチは,RPC発行先トランザクションブランチが存在するノードのトランザクションサービスプロセスにトランザクション同期点メッセージを送信後,トランザクションを決着します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは,該当するトランザクションブランチを処理中のプロセスに,トランザクション同期点指示を送信します。

(障害3)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。

type3

(障害1)が発生してトランザクションをコミットする場合は,type1と同じです。

(障害1)が発生してトランザクションをロールバックする場合,(障害2)が発生した場合,または(障害3)が発生した場合,相手トランザクションブランチが存在するノードのトランザクションサービスプロセスに,トランザクション同期点メッセージを送信します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは,該当するトランザクションブランチを処理中のプロセスに,トランザクション同期点指示を送信します。

次に示す場合,このオペランドにtype2またはtype3を指定しても,トランザクションの決着に時間が掛かることがあります。

  1. RPC実行中に,RPC発行先UAPの状態が変更となり(負荷増加,UAP終了,UAP閉塞など),ほかのノードの同一UAPにサービス要求が再転送された場合

  2. 相手先のOpenTP1がこのオプションをサポートしていないバージョンの場合

  3. 相手先トランザクションブランチがトランザクション同期点メッセージ受信処理以外で時間が掛かっている場合

TP1/Server BaseまたはTP1/LiNK以外とトランザクション連携をする場合,このオペランドにはtype1を指定または省略してください。

なお,このオペランドは,クライアント環境定義のDCCLTTRRECOVERYTYPEオペランドでも指定できます。クライアント環境定義については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

指定値の優先順位は次のとおりです(1.>2.)。

  1. クライアント環境定義

  2. クライアントサービス定義

trn_completion_limit_time=トランザクション完了限界時間

 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

トランザクションブランチの開始から終了までの最大実行時間を指定します。指定時間を超えた場合,このトランザクションブランチのプロセスが異常終了したあとに,トランザクションブランチが回復プロセスによってコミットまたはロールバックのどちらかに決着して終了します。0を指定した場合は,トランザクションブランチの最大実行時間を監視しません。

UAPが異常終了した場合に閉塞するかどうかはholdオペランド,term_watch_timeオペランドの指定によります。詳細については,ユーザサービス定義のholdオペランドおよびterm_watch_timeオペランドの説明を参照してください。

このオペランドの監視対象区間は,dc_trn_begin関数などの呼び出しやサービス関数の開始によるトランザクションの開始から,トランザクションの同期点処理終了情報(TJ)の取得後であるトランザクションブランチの終了までです。ただし,トランザクションの最適化が行われた場合,サーバ側のトランザクションブランチに対する監視が終了するのは,クライアント側に応答を返したあとです。このオペランドの監視対象区間の詳細および各種タイマ監視との関係については,「付録A.2 トランザクションの時間監視」を参照してください。

message_store_buflen=メッセージ格納バッファプール長

 〜〈符号なし整数〉((1024〜31457280))《8196》(単位:バイト)

CUPからのトランザクショナルRPC要求,常設コネクション要求を,トランザクショナルRPC実行プロセス,CUP実行プロセスに渡す前にいったん格納しておく共用メモリのプールの大きさを指定します。

次の計算式で求めた値を指定してください。

メッセージ格納バッファプール長=D×C

D:制御データ長(256バイト)

C:同時に発生するトランザクショナルRPC要求数,常設コネクション要求数のうち大きい値

なお,この計算式の算出結果が8196より小さい場合は,指定する必要はありません。

watch_time=最大応答待ち時間

 〜〈符号なし整数〉((0〜65535))(単位:秒)

CUPから,トランザクションを開始した場合や,常設コネクションを確立した場合,CUPから発行されるRPCはクライアント拡張サービスの実行プロセスが代理実行します。このオペランドでは,実行プロセスが代理実行するRPCによってプロセス間で通信する場合,サービス要求を送信してからサービスの応答が返るまでの待ち時間の最大値を指定します。

指定時間を過ぎても応答がない場合は,受信タイムアウトとしてCUPにエラーリターンします。

0を指定した場合は,応答を受信するまで待ち続けます。

クライアント環境定義にDCWATCHTIMINHERIT=Yと定義されている場合は,CUP側のタイマ値が有効になり,このオペランドに指定されたタイマ値は無視されます。

このオペランドの指定を省略した場合,システム共通定義のwatch_timeオペランドに指定した値を仮定します。

特別なチューニングを必要とする場合以外は,このオペランドの内容を変更しないことをお勧めします。

システム共通定義のwatch_timeオペランドのデフォルト値よりも,極端に小さな値または大きな値を指定すると,OpenTP1ダウンに至る障害が発生する場合がありますので,ご注意ください。

コマンド形式

なし。

注意事項

CUPから起動するトランザクションは,parallel_countオペランドで指定したプロセス数だけ同時に並行実行します。このプロセスのサーバ名は_clttrnです。trnlsコマンドでこのプロセスのトランザクション状態を表示できます。

また,トランザクションブランチ限界経過時間に達した場合などの要因によって,プロセスがキャンセルされた場合に表示するメッセージにも,このサーバ名が表示されます。