Hitachi

TPBroker Version 5 トランザクショナル分散オブジェクト基盤 TPBroker ユーザーズガイド


8.3.2 トランザクション定義

同時実行ブランチ数 /OTS/TM/process_count

〜((1〜4096))<<32,256(Cosminexus TPBroker)>>

同時に起動するトランザクションブランチの数を指定します。

トランザクションサービスを利用するプロセス数,回復プロセス数,および回復処理を待っているトランザクションブランチ数の総数を指定します。

トランザクションブランチを発生させたアプリケーションプログラムが異常終了したとき,回復プロセスがほかのトランザクションブランチの決着処理をしている間,このトランザクションブランチは回復処理を待っている状態になります。この状態が長く続くと,起動できるトランザクションブランチ数が少なくなる場合があります。このため,異常終了後にトランザクションブランチを発生できるアプリケーションプログラムの扱いや,異常終了の頻度などを考慮してトランザクションブランチ数を指定する必要があります。指定数の目安を次に示します。

(トランザクションを実行するアプリケーションプログラム+回復プロセス数)
  <(指定するトランザクションブランチ数)
  <=(トランザクションを実行するアプリケーションプログラム×2
  +回復プロセス数)

なお,指定数が多くなればなるほどメモリ資源の効率が悪くなるので注意してください。

例 tsdefvalue /OTS/TM process_count -i 32
最大接続可能CRMブランチ数 /OTS/TM/max_crm_branch_count

〜((0〜256))<<8>>

一つのトランザクションブランチから生成するトランザクションブランチの最大数を指定します。ネスティッドトランザクションを実行する場合は,そのトランザクションブランチで開始するサブトランザクションも含めた数を指定します。CosTransactions::Coordinator::register_resourceおよびCosTransactions::Coordinator::register_subtran_aware関数を発行する場合は,そのトランザクションブランチでのこれらの関数の発行回数も含めて指定します。

例 tsdefvalue /OTS/TM max_crm_branch_count -i 8
回復プロセス数 /OTS/recovery_process_count

〜((1〜128))<<1>>

トランザクションブランチが異常終了したときに,トランザクションブランチの回復処理を並行して実行できる数を指定します。

トランザクションブランチが異常終了した場合は,ここで指定した数だけ並行してトランザクションブランチの回復処理をします。

例 tsdefvalue /OTS recovery_process_count -i 1
決着プロセス数 /OTS/completion_process_count

〜((1〜128))<<1>>

トランザクションブランチを決着するときに,決着処理を並行して実行できる数を指定します。

トランザクションブランチを決着する場合は,ここで指定した数だけ並行してトランザクションブランチの決着処理をします。

例 tsdefvalue /OTS completion_process_count -i 1
決着プロセスポート番号ベース /OTS/completion_process_port_base

〜((1024〜32767))<<20085>>

決着デーモンが使用するポート番号を指定します。ここで指定したポート番号から連続して,/OTS/completion_process_countで指定した値だけのポート番号を決着デーモンが使用します。

TPBrokerを開始するときに,ここで指定したポート番号のポートをほかのプロセスが使用していると,決着デーモンが起動せずtsstartコマンドはタイムアウトします。この場合,この定義の値を変更してください。

例 tsdefvalue /OTS completion_process_port_base -i 20085
トレースファイル削除インタバル /OTS/set_trace_remove_interval

〜((0〜2147483647))<<43200>>(単位:秒)

$TPSPOOL/traceおよび$TPSPOOL/aptrace下に作成されるトレースファイルを自動削除するときのインタバルを指定します。0を指定した場合は,トレースファイルは自動削除されません。

例 tsdefvalue /OTS set_trace_remove_interval -i 43200
トレースファイル最大残存数 /OTS/max_trace_remain_num

〜((0〜2147483647))<<500>>(単位:ファイル)

$TPSPOOL/traceおよび$TPSPOOL/aptrace下に作成されるトレースファイルを自動削除するとき,新しいファイルから,ここで指定したファイル数だけトレースファイルが残ります。0を指定した場合は,すべてのトレースファイルが削除されます。ただし,使用中のトレースファイルは,自動削除の対象とはなりません。

例 tsdefvalue /OTS max_trace_remain_num -i 500
回復プロセス環境変数 /OTS/recovery_process_env

〜<文字列の配列><<なし>>

回復プロセスに追加設定する環境変数を「環境変数名=値」の形式で指定します。この定義は,必ずtsdefvalueコマンドの-aオプションで指定してください。複数の環境変数を指定する場合は,次のようにします。

tsdefvalue /OTS recovery_process_env -a "ENV1=VALUE1"\
"ENV2=VALUE2" "ENV3=VALUE3"

指定できる定義の長さには制限があります。N個の環境変数を指定する場合,次の条件を満たす必要があります。

(各文字列の長さの和)+N<= 2000

この定義にスペースが含まれる場合,スペース以降の環境変数は設定されません。次のように指定すると,「ENV3=VALUE3」は設定されません。

tsdefvalue /OTS recovery_process_env -a "ENV1=VALUE1" "" "ENV3=VALUE3"
決着プロセス環境変数 /OTS/completion_process_env

〜<文字列の配列><<なし>>

決着プロセスに追加設定する環境変数を「環境変数名=値」の形式で指定します。この定義は,必ずtsdefvalueコマンドの-aオプションで指定してください。複数の環境変数を指定する場合は,次のようにします。

tsdefvalue /OTS completion_process_env -a "ENV1=VALUE1"\
"ENV2=VALUE2" "ENV3=VALUE3"

指定できる定義の長さには制限があります。N個の環境変数を指定する場合,次の条件を満たす必要があります。

(各文字列の長さの和)+N<= 2000

この定義にスペースが含まれる場合,スペース以降の環境変数は設定されません。次のように指定すると,「ENV3=VALUE3」は設定されません。

tsdefvalue /OTS completion_process_env -a "ENV1=VALUE1" "" "ENV3=VALUE3"
決着プロセスホスト名 /OTS/completion_process_ipaddr_info

〜<文字列><<"">>

決着プロセスが使用するホスト名を明示的に指定します。IPアドレスは指定できません。マシンに複数のネットワークインタフェースがあり,そのうちの一つのネットワークインタフェースを使用する場合に,この定義を指定します。また,クラスタ構成でトランザクションサービスを運用する場合にも使用してください。この定義が指定されていない場合は,デフォルトのホスト名が使用されます。再開始したときには,前回起動時に使用したホスト名を引き継ぎます。

例 tsdefvalue /OTS completion_process_ipaddr_info  -s "host01"
デーモンプロセスホスト名 /OTS/set_ipaddr_info

<文字列><<"">>

プライマリIPアドレスが切り替わるクラスタ構成の場合に,OTSデーモン,決着デーモン,回復デーモン,およびTCSの各プロセスが使用するホスト名を明示的に指定します。マシンに複数のネットワークインタフェースがあり,そのうちの一つのネットワークインタフェースを使用する場合に,この定義を指定します。この定義が指定されていない場合は,デフォルトのホスト名が使用されます。決着プロセスでは,/OTS/completion_process_ipaddr_infoが指定されていれば,その指定が有効になります。

例 tsdefvalue /OTS set_ipaddr_info  -s "host01"
OTS監視プロセス最大数(C++) /OTS/max_process_monitor_count

〜((300〜30000))<<300>>

この定義はC++実行環境だけに提供される定義です。

OTSデーモンが監視できるC++アプリケーションプロセスの最大数を指定します。

OTSデーモンは,トランザクション実行中のC++アプリケーションプロセスの状態を監視しています。これによって,トランザクション実行中のC++アプリケーションプロセスが異常終了した場合,そのプロセスで実行中であったトランザクションのタイムアウトまで遅延することなく迅速に回復(ロールバック)処理が行われます。

この定義に指定する値の求め方を次に示します。

(OTS機能を使用するC++アプリケーションの最大同時存在プロセス数+決着プロセス数+回復プロセス数)<(指定するOTS監視プロセス最大数)

TCSを使用する場合は,OTS機能を使用するアプリケーションプログラムの最大同時存在プロセス数として1プロセスを追加してください。

なお,この定義の指定値が大きくなると,プロセス異常終了時の実行中のトランザクション回復までに時間が掛かることがあります。

トランザクションステータス書き込みモード /OTS/TM/set_status_write_mode "none"|"immediate"

〜<<"none">>

トランザクションが完了したときのステータスを書き込むモードを指定します。次のどちらかを指定してください。

  • "none"

    トランザクションが完了したとき,ステータスを書き込みません。通常運用時のレスポンス・スループットを向上できます。

  • "immediate"

    トランザクションが完了したとき,トランザクション完了を示すステータスを書き込みます。再起動時のOTSサービスの起動時間を短縮できます。

この定義が未設定の場合,メッセージKFCB31493-Wを出力し,"none"を使用します。

誤った値が指定されている場合,メッセージKFCB31494-Wを出力し,"none"を使用します。

トランザクション引き継ぎモード /OTS/TM/set_recovery_mode 0|1

〜<<0,1(Cosminexus TPBroker)>>

この定義はC++実行環境およびトランザクションコンテキストサーバに対して有効となる定義です。Cosminexus TPBrokerでは,必ず1(デフォルト値)を指定してください。

リソースマネージャに対して発行したXA関数がエラーリターンした場合のアプリケーションプログラムの処理を選択します。

決着処理失敗時の動作での,トランザクション決着処理モードの有効範囲を次の表に示します。

表8‒3 トランザクション決着処理モードの有効範囲

リターン値

XA関数

xa_prepare

xa_commit

xa_rollback

xa_forget

XA_RETRY

(連続して5回戻った場合)

XA_RETRY_COMMFAIL

(連続して5回戻った場合)

XAER_RMFAIL

XAER_RMERR

(凡例)

○:トランザクション決着処理モードが有効な範囲です。

−:XA関数でリターン値が返されることはありません。

△:この定義の指定に関係なく,強制停止されません。

注※

XA関数を一定回数リトライしても,該当リターン値が返り続けた場合。

  • 0

    表8-3の○で示した部分でXA関数がエラーリターンした場合,該当XA関数を発行したプロセスを強制停止します。

  • 1

    表8-3の○で示した部分でXA関数がエラーリターンした場合,該当XA関数を発行したプロセスをTPBrokerが強制停止しないで,アプリケーションプログラムに制御を戻します。以降の決着処理は回復デーモンが引き継ぎます。すでにコミット決定がなされていればコミットで,ヒューリスティック状態になっていれば対応するヒューリスティック例外で,それ以外の場合はロールバックでアプリケーションプログラムに制御を戻します。ただしxa_commitが1相コミットとして発行されていた場合は,HeuristicHazard例外でアプリケーションプログラムに制御を戻します。

/OTS/TM/set_recovery_modeには,「1」を指定することをお勧めします。「1」を指定することによって得られる利点を次に示します。

  • アプリケーションプログラムが不用意に終了してしまうケースを削減できます。

  • マルチスレッドアプリケーションで,他スレッドの処理を巻き込んで終了することを回避できます。

  • 強制終了(abort)が例外通知になることで,アプリケーションプログラム固有の後処理を行うことができます。

なお,この定義によるトランザクションの引き継ぎの指定は次の場合だけ有効です。

  • すべてのリソースマネージャの/OTS/RM/set_xa_open_scopeの設定が"thread"

  • /OTS/RM/set_xa_rmerr_actionの設定が"retry1"

  • /OTS/RM/set_xa_rmfail_actionの設定が"retry1"

この機能を有効にした場合,トランザクションが完了する前にアプリケーションプログラムへ制御を戻すために次のような事象が発生する場合があります。

  • アプリケーションプログラムに制御を戻したあとに,ヒューリスティック状態になります。XA関数からヒューリスティックのリターン値が返されたかどうかは,メッセージログおよびシステムログのメッセージKFCB31200-E aa..aa function error. rmid=bb...bb rc=cc...cc(cc..ccが5〜8の場合がヒューリスティックのリターン)から判断できます。

  • xa_commit関数が1相コミットとして発行されており,かつ回復デーモンが処理を引き継いだ場合に,アプリケーションプログラムへHeuristicHazard例外が返されます。

コンパイラ選択 /OTS/set_compiler_info "MS80"(Windows Visual Studio 2005の場合),"GLNX"|"GL32"(Linux AS4の場合)

〜<<"GLNX"(Linux AS4の場合)>>

この定義はWindows(Visual Studio 2005)またはRedhat Enterprise Linux AS4のC++実行環境だけに提供される定義です。TPBrokerが使用するコンパイラを指定します。Windows(Visual Studio 2005)の場合"MS80"を指定してください。AIXでVisual Age C++ for AIX V5.0またはV6.0またはIBM C/C++ Enterprise Edition for AIX V7.0を使用する場合"AIXC"を指定してください。AIXでIBM C/C++ Enterprise Edition for AIX V8.0を使用する場合"XLC8"を指定してください。AIXでIBM C/C++ Enterprise Edition for AIX V9.0を使用する場合"XLC9"を指定してください。

tsstartコマンドタイムアウト値 /OTS/tsstart_timeout

〜((300〜1800))<<300>>(単位:秒)

tsstartコマンドでTPBrokerを開始する場合のタイムアウト時間を指定します。

この定義が未設定の場合,メッセージKFCB31493-Wを出力し,タイムアウト時間には300が設定されます。誤った値が指定されている場合,メッセージKFCB31494-Wを出力し,タイムアウト時間には300が設定されます。

上記メッセージの出力先は,標準エラー出力,syslog,OTSメッセージログです。なお,この定義は再開始後に引き継がれないで,常にシステム環境定義から読み込まれます。

例 tsdefvalue /OTS tsstart_timeout -i 600