Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


2.3.8 トランザクション処理での注意事項

〈この項の構成〉

(1) ユーザサービス定義との関連

トランザクションとして実行中のサービスから,トランザクション属性であることを指定(atomic_updateオペランドにYを指定)したサービスを要求する場合は,次のことに気を付けてください。

  1. サーバUAPのユーザサービス定義の最大プロセス数(parallel_countオペランド)は余裕を持った値を指定しておいてください。サーバUAPの処理が終了しても,グローバルトランザクションの同期点処理が完了するまで,ほかのクライアントUAPにはサービスを提供しません(ただし,同期点処理の最適化ができる場合を除きます)。この場合,トランザクションが長時間続くと,その間にサービスを要求した,異なるクライアントUAPの数だけのプロセスを占有することになります。そのため,トランザクションの性能が低下するおそれがあります。

  2. ユーザサービス定義のサービス要求滞留値(balance_countオペランド)に指定した値によっては,マルチサーバ機能を使ったユーザサーバでも非常駐プロセスが増えないで,RPCがタイムアウトになる場合があります。balance_countオペランドには,サーバUAPの負荷に応じた最適な値を指定してください。

    次の場合には,必ずbalance_countオペランドに0を指定してください。

    • 非常駐プロセスだけで構成されるユーザサーバでリカーシブコールをする場合(例えば,parallel_count=0,2の場合)。

    • 一つの常駐プロセスと,ほかの非常駐プロセスで構成されるユーザサーバでリカーシブコールをする場合(例えば,parallel_count=1,2の場合)。

(2) トランザクション処理の時間監視について

トランザクションの開始から同期点処理までの時間監視では,トランザクション内で呼び出したdc_rpc_call関数がリターンするまでの時間を含めるか含めないかを選択できます。この指定はユーザサービス定義,ユーザサービスデフォルト定義,トランザクションサービス定義のtrn_expiration_time_suspendオペランドで指定します。

trn_expiration_time_suspendオペランドに指定する値とトランザクションの時間監視の詳細については,マニュアル「OpenTP1 システム定義」を参照してください。