Hitachi

インメモリデータグリッド Hitachi Elastic Application Data Store ユーザーズガイド


9.3.3 タイムアウトに関連するパラメタ

タイムアウトに関連するパラメタの一覧を次の表に示します。

表9‒4 タイムアウトに関連するパラメタ一覧

項番

定義ファイル

パラメタ名

指定する値

デフォルト値

1

サーバ定義ファイル

eads.server.connection.timeout

100〜3600000

(ミリ秒)

60000

2

eads.admin.operation.connection.timeout

100〜3600000

(ミリ秒)

10000

3

eads.failureDetector.heartbeat.interval

10〜60000

(ミリ秒)

400

4

eads.failureDetector.heartbeat.timeout

10〜86400000

(ミリ秒)

2000

5

eads.failureDetector.connection.timeout

1〜60000

(ミリ秒)

500

6

eads.failureDetector.read.timeout

1〜60000

(ミリ秒)

500

7

eads.failureDetector.retry

0〜100

0

8

eads.failureDetector.assertive.threshold

1〜49

1

9

eads.admin.boot.timeout

1〜86400

(秒)

60

10

eads.server.connection.keepAlive.timeout

0〜3600(秒)

3600

11

eads.admin.operation.isolate.gracefulstop.waitTime

0〜3600000

(ミリ秒)

3000

12

eads.replication.consensus.timeout

10〜3600000

(ミリ秒)

800

13

eads.transfer.timeout

100〜3600000(ミリ秒)

60000

14

eads.transfer.interval

0〜60000

(ミリ秒)

1000

15

eads.rebalance.transfer.interval

1〜60000(ミリ秒)

1000

16

eads.replication.fillgap.copy.timeout

100〜3600000(ミリ秒)

2000

17

eads.admin.operation.resume.send.interval

0〜2147483647(ミリ秒)

0

18

eads.server.eventListener.notify.retry.timeout

10〜3600000(ミリ秒)

120000

19

コマンド定義ファイル

eads.command.connection.timeout

0〜2147483647

(ミリ秒)

3000

20

eads.command.common.read.timeout

0〜2147483647

(ミリ秒)

600000

21

eads.command.common.execution.timeout

0〜2147483647

(秒)

600

22

eads.command.<サブコマンド名>.read.timeout

0〜2147483647

(ミリ秒)

600000

23

eads.command.<サブコマンド名>.execution.timeout

0〜2147483647

(秒)

600

24

クライアント定義ファイル

eads.client.connection.send.timeout

100〜3600000

(ミリ秒)

60000

25

eads.client.connection.receive.timeout

100〜3600000

(ミリ秒)

60000

26

eads.client.clusterInfo.update.interval

10〜60000

(ミリ秒)

1000

27

eads.client.eventListener.enable

  • true

  • false

false

28

eads.client.eventListener.reconnect.interval

1000〜60000(ミリ秒)

1000

〈この項の構成〉

(1) サーバ定義ファイル

(a) eads.server.connection.timeout

クラスタ構成情報の更新確認やデータ送受信のタイムアウト時間(単位:ミリ秒)を指定します。

(b) eads.admin.operation.connection.timeout

次に示すコマンド実行時の,EADSサーバ間の接続やデータ送受信のタイムアウト時間(単位:ミリ秒)を指定します。

(c) eads.failureDetector.heartbeat.interval

ハートビートの送信間隔(単位:ミリ秒)を指定します。

このパラメタの指定値が大きいほど,復旧処理,スケールアウト処理,およびリバランス処理の性能に影響が出やすくなります。また,クラスタの起動時にタイムアウトが発生しやすくなります。

このパラメタの指定値が小さいほど,処理の通信負荷が高くなります。

このパラメタには,次に示すパラメタの指定値より小さい値を指定してください。

(d) eads.failureDetector.heartbeat.timeout

ハートビートのタイムアウト時間(単位:ミリ秒)を指定します。

このパラメタの指定値が大きいほど,障害を検知するまでに時間が掛かります。一方で,このパラメタの指定値が小さ過ぎると,障害を誤検知するおそれがあります。

また,このパラメタの指定値が大きいほど,更新操作の履歴を管理および格納するために,より多くのJavaヒープサイズ(共通設定のeads.java.heapsizeパラメタの指定値)およびExplicitヒープサイズ(共通設定のeads.java.external.heapsizeパラメタの指定値)が必要になります。

一時的な障害が発生した際に,EADSサーバを縮退させないで合意処理を行うために,このパラメタにサーバ定義のeads.replication.consensus.timeoutパラメタの指定値より大きい値を設定してください。このパラメタにサーバ定義のeads.replication.consensus.timeoutパラメタより小さい値を設定した場合は,縮退処理中にタイムアウトが発生し,縮退が完了するまでに余計な時間が掛かるおそれがあります。

(e) eads.failureDetector.connection.timeout

生存確認の接続タイムアウト時間(単位:ミリ秒)を指定します。

このパラメタの指定値が大きいほど,コネクションを確立できない場合に,障害を検知するまでの時間が掛かります。一方で,このパラメタの指定値が小さ過ぎると,コネクションを正常に確立する前にタイムアウトするおそれがあります。

このパラメタには,サーバ定義のeads.replication.consensus.timeoutパラメタと近い値を指定することを推奨します。

(f) eads.failureDetector.read.timeout

生存確認の受信タイムアウト時間(単位:ミリ秒)を指定します。

このパラメタの指定値が大きいほど,障害を検知するまでの時間が掛かります。一方で,このパラメタの指定値が小さ過ぎると,障害を誤検知するおそれがあります。

このパラメタには,サーバ定義のeads.replication.consensus.timeoutパラメタと近い値を指定することを推奨します。

(g) eads.failureDetector.retry

生存確認タイムアウト時のリトライ回数を指定します。

(h) eads.failureDetector.assertive.threshold

EADSサーバダウンに同意するEADSサーバ数を指定します。

(クラスタを構成するEADSサーバ数+1)÷2を切り上げた値以下となるように設定してください。例えば,クラスタを構成するEADSサーバ数が5つの場合は,このパラメタに3以下の値を指定してください。

このパラメタの指定値を大きくすると,ダウンしたEADSサーバをいつまでも縮退できなくなるおそれがあります。その代わり,スプリットブレイン発生時などネットワークの一時的な障害が起きた場合に,EADSサーバがすぐに縮退されることを防ぐことができます。

(i) eads.admin.boot.timeout

クラスタを構成する全EADSサーバが開始するまでの最大待ち時間(単位:秒)を指定します。

(j) eads.server.connection.keepAlive.timeout

EADSクライアント・EADSサーバ間の接続を切断するまでの時間(単位:秒)を指定します。

リクエスト待ちの状態(通信が行われない状態)が,指定した時間以上続いた場合,接続が切断されます。

0を指定した場合,タイムアウトなし(無限)となります。

(k) eads.admin.operation.isolate.gracefulstop.waitTime

eztool isolateコマンドを実行したEADSサーバのクラスタ構成情報の更新が完了してから,縮退処理が完了するまでの時間(単位:ミリ秒)を指定します。

EADSクライアントからクラスタ構成情報の更新確認を受信したEADSサーバが縮退する際,EADSクライアントのクラスタ構成情報の更新が完了する前にコネクションがクローズしてしまうと,通信エラーになります。このパラメタの指定値を調整することで,EADSクライアントのクラスタ構成情報の更新完了後に,EADSサーバを縮退できます。

(l) eads.replication.consensus.timeout

合意処理のタイムアウト時間(単位:ミリ秒)を指定します。

指定した時間内に合意処理ができない場合は,タイムアウトして再度合意処理をし直します。

(m) eads.transfer.timeout

復旧処理,スケールアウト処理,およびリバランス処理でのデータ送信タイムアウト時間(単位:ミリ秒)を指定します。

扱うデータサイズに合わせて指定してください。

このパラメタは,復旧処理,スケールアウト処理,およびリバランス処理で,次のようなケースが発生した場合に備えるために設定します。

  • データの転送元のEADSサーバがダウンした際に,データの転送先のEADSサーバが待ち状態になる

  • データの転送先のEADSサーバがコネクションを保持したままハングアップした際に,データの転送元のEADSサーバが待ち状態になる

(n) eads.transfer.interval

復旧処理およびスケールアウト処理でのデータ送信間隔(単位:ミリ秒)を指定します。

復旧処理およびスケールアウト処理では,復旧対象のEADSサーバ,またはスケールアウト処理で追加したEADSサーバで,このパラメタに指定した値が適用されます。

このパラメタの指定値とサーバ定義のeads.transfer.datasizeパラメタの指定値は,次の式を満たすように設定してください。

復旧処理およびスケールアウト処理のデータ送信に使用できる帯域(単位:bps)≧

 (復旧処理およびスケールアウト処理で送信するデータサイズ(単位:バイト)×8)

 ÷{(復旧処理およびスケールアウト処理でのデータ送信間隔(単位:ミリ秒)

 +データ送信に掛かる時間(単位:ミリ秒))÷1,000}

復旧処理およびスケールアウト処理で送信するデータサイズ(単位:バイト):

サーバ定義のeads.transfer.datasizeパラメタの指定値

復旧処理およびスケールアウト処理でのデータ送信間隔(単位:ミリ秒):

サーバ定義のeads.transfer.intervalパラメタの指定値

データ送信に掛かる時間(単位:ミリ秒):

サーバ定義のeads.transfer.datasizeパラメタに指定したサイズのデータ送信に掛かる時間(単位:ミリ秒)

9.3.2(5) クラスタの復旧処理」の図中の「復旧処理(データ送信)」に掛かる時間を示します(スケールアウト処理の場合は,「復旧」を「スケールアウト」に読み替えてください)。この時間は環境によって異なります。

復旧処理およびスケールアウト処理に掛かる時間を短くすると,復旧処理およびスケールアウト処理の通信負荷が高くなります。通信負荷が高くなると,キャッシュを更新するAPの処理速度が低下するおそれがあります。逆に,復旧処理およびスケールアウト処理の通信負荷を低くすると,復旧処理およびスケールアウト処理に掛かる時間が長くなります。

ディスクキャッシュ,および2Wayキャッシュを復旧する場合,このパラメタの指定は無効になり,キャッシュ定義のeads.cache.disk.transfer.intervalパラメタの指定値が有効となります。

(o) eads.rebalance.transfer.interval

リバランス処理でのデータ転送の送信間隔(単位:ミリ秒)を指定します。

リバランス処理では,EADSサーバが新しく管理するレンジのデータは,元々そのレンジを管理していたEADSサーバ(分割前のレンジを管理していたEADS サーバ)から転送されます。その際,このパラメタに指定した送信間隔で,データを転送します。

分割前のレンジを管理していたEADSサーバと,分割後(結合後)のレンジを管理するEADSサーバで,このパラメタの指定値が異なる場合には,分割後(結合後)のレンジを管理するEADSサーバのパラメタの指定値が優先されます。

また,eztool rebalanceコマンドの-iまたは--intervalオプションを指定した場合には,このパラメタの指定値よりも,-iまたは--intervalオプションの指定値が優先されます。

(p) eads.replication.fillgap.copy.timeout

更新操作の履歴の補完処理で,更新操作の履歴を送信する際の送信タイムアウト時間(単位:ミリ秒)を指定します。

次に示す値のうち,最も大きな値を処理できる時間を設定してください。

  • データのコピー先EADSサーバに対して,1回当たりに送信するデータサイズ(サーバ定義のeads.replication.fillgap.copy.datasizeパラメタの値)

  • keyの最大サイズ+valueの最大サイズ×2

  • (keyの最大サイズ+valueの最大サイズ)×最大同時更新データ件数

(凡例)
  • keyの最大サイズ:

    共通設定のeads.cache.key.maxsizeパラメタの指定値

  • valueの最大サイズ:

    put,create,update,replace実行時に指定するvalueの最大サイズです。

  • 最大同時更新データ件数:

    メモリキャッシュを使用して,データの一括操作を実行する場合は10を代入します。それ以外の場合は,1を代入します。

更新操作の履歴の補完処理については,「9.3.2(8) 更新操作の履歴の補完処理」を参照してください。

(q) eads.admin.operation.resume.send.interval

eztool resumeコマンド実行時の差分転送間隔(単位:ミリ秒)を指定します。

(r) eads.server.eventListener.notify.retry.timeout

イベントリスナ用のコネクションが切断された場合に,EADSサーバがEADSクライアントに対して,イベントの再送をリトライする時間(単位:ミリ秒)を指定します。

注意事項

このパラメタに指定した時間の間は,EADSクライアントに再送するデータをEADSサーバがJavaヒープに保持します。時間を過ぎるとEADSクライアントに再送するデータは破棄されます。

(2) コマンド定義ファイル

(a) eads.command.connection.timeout

コマンド実行時のEADSサーバとの通信の接続タイムアウト時間(単位:ミリ秒)を指定します。

このパラメタに0を指定した場合,タイムアウトしません。

なお,次のコマンドではこのパラメタの指定は無効になります。

(b) eads.command.common.read.timeout

コマンド実行時のEADSサーバとの通信の受信タイムアウト時間(単位:ミリ秒)を指定します。

このパラメタの指定値には,サーバ定義のeads.admin.operation.isolate.gracefulstop.waitTimeパラメタの指定値より大きな値を指定してください。

このパラメタに0を指定した場合,タイムアウトしません。

なお,次のコマンドではこのパラメタの指定は無効になります。

次のコマンドを実行する場合は,このパラメタの値を,クライアント定義のeads.client.connection.receive.timeoutパラメタに適用します。

ただし,次の場合はこのパラメタの値を適用しません。

(c) eads.command.common.execution.timeout

コマンド実行開始からのタイムアウト時間(単位:秒)を指定します。

このパラメタに0を指定した場合,タイムアウトしません。

なお,次のコマンドではこのパラメタの指定は無効になります。

(d) eads.command.<サブコマンド名>.read.timeout

特定のサブコマンド実行時の,EADSサーバとの通信の受信タイムアウト時間(単位:ミリ秒)を指定します。

サブコマンド名には,このパラメタの指定値を適用したいサブコマンド名を指定します。サブコマンド名を指定したサブコマンドの実行時には,コマンド定義のeads.command.common.read.timeoutパラメタの指定値よりも,このパラメタの指定値が優先されます。

このパラメタの指定値には,サーバ定義のeads.admin.operation.isolate.gracefulstop.waitTimeパラメタの指定値より大きな値を指定してください。

このパラメタに0を指定した場合,タイムアウトしません。

なお,次のコマンドではこのパラメタの指定は無効になります。

次のコマンドを実行する場合は,このパラメタの値を,クライアント定義のeads.client.connection.receive.timeoutパラメタに適用します。

ただし,次の場合はこのパラメタの値を適用しません。

(e) eads.command.<サブコマンド名>.execution.timeout

特定のサブコマンドの実行開始からのタイムアウト時間(単位:秒)を指定します。

サブコマンド名には,このパラメタの指定値を適用したいサブコマンド名を指定します。サブコマンド名を指定したサブコマンドの実行時には,コマンド定義のeads.command.common.execution.timeoutパラメタの指定値よりも,このパラメタの指定値が優先されます。

このパラメタに0を指定した場合,タイムアウトしません。

なお,次のコマンドではこのパラメタの指定は無効になります。

(3) クライアント定義ファイル

(a) eads.client.connection.send.timeout

クラスタ構成情報の更新確認やデータ送信のタイムアウト時間(単位:ミリ秒)を指定します。

(b) eads.client.connection.receive.timeout

クラスタ構成情報の更新確認やデータ受信のタイムアウト時間(単位:ミリ秒)を指定します。

次の時間を考慮してください。

  • EADSサーバに配置しているユーザファンクションの実行時間

(c) eads.client.clusterInfo.update.interval

EADSクライアントがクラスタ内の一つ一つのEADSサーバに対してクラスタ構成情報の更新確認を行う間隔(単位:ミリ秒)を指定します。

このパラメタの指定値には,サーバ定義のeads.admin.operation.isolate.gracefulstop.waitTimeパラメタの指定値より小さい値を指定してください。

クラスタを構成するEADSサーバ数を考慮してください。

クラスタを構成するEADSサーバ数が増えると,このパラメタに指定した時間内に通信する回数が増えるため,EADSクライアントへの負荷が増加します。

(d) eads.client.eventListener.enable

イベントリスナを使用するかどうかを指定します。

true:

イベントリスナを使用します。

false:

イベントリスナを使用しません。

trueを指定すると,クラスタイベントリスナおよびノードイベントリスナのイベントが発生した場合に,EADSサーバがEADSクライアントに対してクラスタ構成情報の更新を通知します。

(e) eads.client.eventListener.reconnect.interval

イベントリスナ用のコネクションが切断された場合に,コネクションを再接続する間隔(単位:ミリ秒)を指定します。