Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


3.11.2 タイマ

トランザクション制御の中で使用するタイマのチューニングパラメタについては次の表の記載のとおりです。

表3‒44 チューニング対象のパラメタ一覧

項番

パラメタ設定の主体

パラメタ名

説明

1

Orchestrator

jp.co.Hitachi.soft.hmppcto.grpc.watchtime-in-seconds

<パラメタの説明>

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはOrchestratorからMediatorへトランザクション決着指示の要求電文を送信してから、トランザクション合意結果を受け付けるまでの間を監視します。

このタイマがタイムアウトした時点でMediatorから1つも応答がない場合は、トランザクションの決着結果は不明としてAPに応答し通信エラーとなります。

パラメタの詳細については、「9.2.2 Orchestrator」を参照してください。

<設定方法>

トランザクション決着結果が確定する前に、このタイマがタイムアウトするのを防ぐためトランザクション決着監視タイマより大きな値を設定してください。その上でユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと障害でMediatorがダウンしていた場合に、監視時間分待ち合わせてしまいスレッドを占有してしまいます。

タイマの値が短いと障害によって分散合意ができない場合の遅延を許容できる時間が短くなります。

このタイマは、次のタイマより大きい値を設定してください。

  • SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

  • TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

2

  • SQL-Participant

  • TCC-Participant

  • TP1-Bridge

  • SQL-Participant、TCC-Participantの場合

    jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

  • TP1-Bridgeの場合

    externalConsensus.intervalInMillis

<パラメタの説明>

補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定します。

このタイマはMediatorから1つ目の合意を受信してから分散合意可能な数のMediatorから合意を受信するまでを監視します。

このタイマがタイムアウトした場合は次の動作を行います。

  • Mediatorから高速合意できるだけの合意を受信していれば、高速合意を実行します。

  • Mediatorから高速合意できるだけの合意を受信しておらず、補助合意できるだけの合意を受信していれば、補助合意を実行します。

なお、このタイマは合意できるまで無限にリトライします。

パラメタの詳細については、「9.2.4 SQL-Participant」、「9.2.5 TCC-Participant」、および「9.3.2 TP1-Bridge(通常版かつTP1-Bridge限定)」を参照してください。

<設定方法>

基本はデフォルト値を設定した上で、補助合意が頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとタイムアウト時に補助合意できるMediatorがそろう可能性が高まりますが、補助合意実行までの間隔が伸び遅延が大きくなります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認し、不要な補助合意が発生します。

このタイマは、次のタイマより小さい値を設定してください。

  • SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

  • SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.consensus.replay-interval-in-millis

  • TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

  • TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

  • TP1-Bridgeのパラメタ

    tp1.transactionTermination.timeoutInMillis

  • TP1-Bridgeのパラメタ

    tp1.transactionTermination.consensus.replayIntervalInMillis

3

SQL-Participant

jp.co.Hitachi.soft.hmppcto.sql.pool.allocation-wait-time-in-millis

<パラメタの説明>

SQL-ParticipantがDBアクセスのためのコネクションをコネクションプールから取得する際に、コネクションプールに空きがなかった場合の空き待ち時間をミリ秒単位で指定します。

このタイマはSQL-ParticipantからDBへのコネクション接続要求を送信し、接続確立の応答が帰るまでの間を監視します。

このタイマがタイムアウトした場合はエラーとなり、トランザクションブランチをロールバックします。

パラメタの詳細については、「9.2.4 SQL-Participant」を参照してください。

<設定方法>

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整するか次の値を大きくしてください。

  • SQL-Participantのパラメタ

    jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size

タイマの値が長いとDBとのコネクションが確保できない場合に許容できる時間が増えますが、遅延が大きくなります。

タイマの値が短いと遅延は短縮されますが、許容できる時間が短くなり、エラーリターンします。

4

jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

<パラメタの説明>

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、ParticipantからDBへxa_startを行ってからxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.4 SQL-Participant」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

  • SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

5

jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.consensus.replay-interval-in-millis

<パラメタの説明>

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で指定します。このタイマは、トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする際、トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする際、またはSQL-Participantダウンからの再起動時にトランザクション決着処理をする際に設定します。設定した時間を超えてもトランザクションが決着しなかった場合は、トランザクション決着処理を再実行(リプレイ)し、DBの排他ロック解除のためにトランザクションを決着に向かわせます。

このタイマは、ParticipantからMediatorへ投票を行ってからDBへxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.4 SQL-Participant」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

  • SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

6

TCC-Participant

jp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

<パラメタの説明>

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。障害によってトランザクション決着に至らない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、ユーザが許容できる時間(業務要件)を超過したと判断しトランザクションを決着に向かわせるタイマです。

このタイマは、APIアダプタ機能から業務ロジックへTryを実行する直前から分散合意結果に従ってTry実行に対するConfirm/Cancelの実行が完了するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.5 TCC-Participant」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

  • TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

7

jp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

<パラメタの説明>

トランザクション分散合意処理をリトライする間隔をミリ秒単位で指定します。障害などによってトランザクションの分散合意ができないとき、この間隔によってトランザクションの分散合意が決着するまで分散合意処理をリトライし、分散合意によるトランザクションの決着が必ず行われるようにするためのリトライ間隔です。

このタイマは、ParticipantからMediatorへ投票を行ってから分散合意が決着するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.5 TCC-Participant」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

  • TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

8

TP1-Bridge

tp1.pool.allocationWaitTimeInMillis

<パラメタの説明>

TP1-BridgeがOpenTP1にアクセスするためのコネクションをコネクションプールから取得する際に、コネクションプールに空きが無かった場合の空き待ち時間をミリ秒単位で指定します。

このタイマがタイムアウトした場合はエラーとなり、トランザクションブランチをロールバックします。

パラメタの詳細については、「9.3.2 TP1-Bridge(通常版かつTP1-Bridge限定)」を参照してください。

<設定方法>

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整するか次の値を大きくしてください。

  • TP1-Bridgeのパラメタ

    tp1.pool.maxPoolSize

タイマの値が長いとOpenTP1とのコネクションが確保できない場合に許容できる時間が増えますが、遅延が大きくなります。

タイマの値が短いと遅延は短縮されますが、許容できる時間が短くなり、エラーリターンします。

9

tp1.transactionTermination.timeoutInMillis

<パラメタの説明>

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、TP1-BridgeからOpenTP1へxa_startを行ってからxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はTP1-BridgeからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.3.2 TP1-Bridge(通常版かつTP1-Bridge限定)」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まりますが障害が発生した場合にRollbackするまでにタイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

  • TP1-Bridgeのパラメタ

    externalConsensus.intervalInMillis

10

tp1.transactionTermination.consensus.replayIntervalInMillis

<パラメタの説明>

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で設定します。このタイマは、トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする際、トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする際、またはTP1-Bridgeダウンからの再起動時にトランザクション決着処理をする際に設定し、設定した時間を超えてもトランザクションが決着しなかった場合に、トランザクション決着処理を再実行(リプレイ)し、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、TP1-BridgeからMediatorへ投票を行ってからDBへxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はTP1-BridgeからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.3.2 TP1-Bridge(通常版かつTP1-Bridge限定)」を参照してください。

<設定方法>

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まりますが障害が発生した場合にRollbackするまでにタイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

  • TP1-Bridgeのパラメタ

    externalConsensus.intervalInMillis

11

Mediator

consensusLog.io.watchInSeconds

<パラメタの説明>

ConsensusLogファイルへの書き込みおよび読み出し時のIO監視時間を秒で指定します。

このタイマは、トランザクション決着指示を受けたMediatorがConsensusLogへ永続化結果を書き込んでから完了するまでの間を監視します。

このタイマがタイムアウトした場合は、障害メッセージを出力し、該当するMediatorは故障と判断し分散合意の対象外となります。

パラメタの詳細については、「9.3.1 Mediator」を参照してください。

<設定方法>

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとハードウェアやドライバが障害検知した場合でも、タイマの指定値分まで監視を続けてしまいます。

タイマの値が短いとIOハングアップした場合に早期に検知できますが、監視時間中に容量が空き、復旧できる見込みがあった場合でもエラーとなります。