Hitachi

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


3.10.2 タイマ

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

メモ

TP1-Bridgeの場合は、次の表中のSQL-ParticipantをTP1-Bridgeに、jp.co.Hitachi.soft.hmppcto.sqlをjp.co.Hitachi.soft.hmppcto.tp1に読み替えてください。

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

項番

パラメタ設定の主体

パラメタ名

説明

1

Orchestrator

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

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

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

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

2

Entity-Service

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

<パラメタの説明>

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

このタイマはEntity-ServiceからParticipantへの要求電文を送信してから、実行結果を受け付けるまでの間を監視します。対象となるのは次のとおりです。

  • Entity-ServiceからParticipantへSQL実行を行う場合

  • Entity-ServiceからParticipantへ先行Prepare要求を行う場合

このタイマがタイムアウトした場合はSQL-Participantの障害と判断し、トランザクションブランチをロールバックします。

パラメタの詳細については、「8.2.3 Entity-Service/Entity-Module」を参照してください。

<設定方法>

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

タイマの値が長いとSQL-ParticipantがSQL実行を行い応答するまでの遅延を許容できますが、障害が発生した場合にトランザクションブランチをロールバックするまでに時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにトランザクションブランチをロールバックできますが、遅延を障害と判断しロールバックします。

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

  • SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.pool.allocation-wait-time-in-millis

3

SQL-Participant

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

<パラメタの説明>

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

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

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

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

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

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

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

<設定方法>

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

タイマの値が長いとタイムアウト時に補助合意できる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

4

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

<パラメタの説明>

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

このタイマはParticipantからMediatorに要求電文を送信してから、Mediatorから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

  • ParticipantからMediatorへ投票を行う場合

  • ParticipantからMediatorへトランザクション合意結果を通知する場合

  • ParticipantからMediatorへトランザクション完了を通知する場合

このタイマがタイムアウトした場合は通信エラーとなります。投票が通信エラーとなった場合は、トランザクションの決着が行えずにRollbackとなるおそれがあります。トランザクション合意結果通知および、トランザクション完了通知が通信エラーとなった場合はOrchestratorへの合意結果の通知やログの削除が行えないおそれがあります。

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

<設定方法>

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

タイマの値が長いとMediatorがダウンしたときにスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

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

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

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

5

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

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

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

  • Entity-Serviceのパラメタjp.co.Hitachi.soft.hmppcto.grpc.watchtime

6

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

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

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

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

  • SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

7

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投票を行います。

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

<設定方法>

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

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

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

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

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

  • SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

8

TCC- Participant

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

<パラメタの説明>

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

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

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

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

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

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

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

<設定方法>

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

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

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

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

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

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

9

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

<パラメタの説明>

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

このタイマはParticipantからMediatorに要求電文を送信してから、Mediatorから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

  • ParticipantからMediatorへ投票を行う場合

  • ParticipantからMediatorへトランザクション合意結果を通知する場合

  • ParticipantからMediatorへトランザクション完了を通知する場合

このタイマがタイムアウトした場合は通信エラーとなります。

投票が通信エラーとなった場合は、トランザクションの決着が行えずにRollbackとなるおそれがあります。

トランザクション合意結果通知および、トランザクション完了通知が通信エラーとなった場合はOrchestratorへの合意結果の通知やログの削除が行えない可能性があります。

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

<設定方法>

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

タイマの値が長いとMediatorがダウンしたときにスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

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

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

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

10

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

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

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

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

  • TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

11

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

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

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

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

  • TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

12

Mediator

consensusLog.io.watchInSeconds

<パラメタの説明>

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

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

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

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

<設定方法>

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

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

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

13

grpc.watchtime

<パラメタの説明>

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

このタイマはMediatorからParticipantに要求電文を送信してから、Participantから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

  • MediatorからParticipantへの投票要求を行う場合

  • MediatorからParticipantへトランザクション決着結果通知を行う場合

  • MediatorからParticipantへトランザクション完了確認通知を行う場合 

このタイマがタイムアウトすると、通信エラーとなります。投票要求および、トランザクション決着結果通知が通信エラーとなった場合は、トランザクションが決着できずにRollbackとなるおそれがあります。トランザクション完了確認通知が通信エラーとなった場合は、ログの削除が行えないおそれがあります。

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

<設定方法>

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

タイマの値が長いとMediatorがダウンした時にスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

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

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

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

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