Hitachi

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


9.1.3 メモリ・バッファに関連するパラメタ

メモリ・バッファに関連するパラメタの一覧を次の表に示します。

表9‒1 メモリ・バッファに関連するパラメタ一覧

項番

定義ファイル

パラメタ名

指定する値

デフォルト値

1

サーバ定義ファイル

eads.server.connection.buffersize

バッファサイズ(1024バイト〜16777216バイト)

4096バイト

2

eads.replication.connection.buffersize

バッファサイズ(1024バイト〜16777216バイト)

131071バイト

3

eads.replication.sendQueue.length

キューの長さ

(10000〜1000000)

100000

4

eads.replication.sendQueue.datasize

1048576バイト〜2147483647バイト

16777216バイト

5

eads.transfer.connection.buffersize

バッファサイズ(1024バイト〜16777216バイト)

131071バイト

6

eads.transfer.datasize

10240バイト〜2147483647バイト

1048576バイト

7

eads.rebalance.transfer.datasize

10240バイト〜2147483647バイト

1048576バイト

8

eads.replication.fillgap.copy.datasize

1024バイト〜16777216バイト

10240バイト

9

eads.admin.operation.resume.send.datasize

0バイト〜2147483647バイト

1048576バイト

10

eads.java.nio.maxCachedBufferSize

0〜9223372036854775807バイト

なし

11

共通設定ファイル

eads.cache.key.maxsize

1バイト〜1024バイト

1024バイト

12

eads.replication.preparations

1〜100

20

13

eads.replication.external.heapsize

1メガバイト〜268435456メガバイト

450メガバイト

14

eads.java.heapsize

ヒープサイズ※1

3072メガバイト

15

eads.java.external.heapsize

ヒープサイズ(2メガバイト〜2147483647メガバイト)

1024メガバイト

16

eads.java.metaspace.maxsize

メモリサイズ※2

83メガバイト

17

eads.cache.limiter.enable

  • true

  • false

true

18

eads.cache.keyCount

1024〜1073741824

1048576

19

eads.server.nonBlocking.external.heapsize

1メガバイト〜268435456メガバイト

30メガバイト

20

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

eads.client.connection.buffersize

バッファサイズ(1024バイト〜16777216バイト)

4096バイト

注※1

指定した値が,JavaVMのヒープサイズオプション(-Xmxおよび-Xms)に適用されます。

注※2

指定した値が,JavaVMのメモリサイズオプション(-XX:MetaspaceSizeおよび-XX:MaxMetaspaceSize)に適用されます。

〈この項の構成〉

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

(a) eads.server.connection.buffersize

コネクション単位で確保する,データの送受信で使用する作業領域のバッファサイズ(単位:バイト)を指定します。

(b) eads.replication.connection.buffersize

合意メッセージの送受信バッファサイズ(単位:バイト)を指定します。

OSで設定されたTCPのウィンドウサイズを指定することを推奨します。

なお,OSによって,このパラメタに指定した値と異なるサイズのバッファが使用されることがあります。

(c) eads.replication.sendQueue.length

合意メッセージの送信キューの長さを指定します。

送信キューは,合意メッセージの送信先となるEADSサーバの数だけ確保されます。

次の計算式から見積もってください。見積もった結果,このパラメタの最小値よりも小さい場合は,最小値を設定してください。

2×a×b+2×a×キャッシュ数+(c−1)×a×キャッシュ数

注意事項

設定した送信キューの長さを超える量の合意メッセージが送信キューに入った場合,通信エラーになります。

(d) eads.replication.sendQueue.datasize

合意メッセージの送信キューに格納できるデータの最大サイズ(単位:バイト)を指定します。

次の計算式から見積もってください。

2×a×b×(c+キャッシュ数)+d×(e−1)×キャッシュ数

  • a:共通設定のeads.replication.preparationsの指定値

  • b:更新操作の履歴の最大サイズ

    更新操作の履歴の最大サイズ(単位:バイト)を見積もる計算式を次に示します。

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

(凡例)
  • MAX:

    計算結果の最も大きい値を選ぶことを示しています。

    (例)MAX(2,10)の計算結果は10となります。

  • keyの最大サイズ:

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

  • valueの最大サイズ:

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

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

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

注意事項

見積もった結果に対して非常に小さい値を設定した場合,送信キューあふれによるリトライが頻発し,処理が継続できなくなるおそれがあります。

(e) eads.transfer.connection.buffersize

復旧処理,スケールアウト処理,およびリバランス処理で使用するデータの送受信バッファサイズ(単位:バイト)を指定します。

OSで設定されたTCPのウィンドウサイズを指定することを推奨します。

なお,OSによって,このパラメタに指定した値と異なるサイズのバッファが使用されることがあります。

(f) eads.transfer.datasize

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

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

復旧処理およびスケールアウト処理では,データの整合性を回復するために,稼働中のEADSサーバが復旧対象のEADSサーバ,およびスケールアウト処理で追加したEADSサーバにデータを送信します。eads.transfer.intervalパラメタに指定した間隔で,このパラメタの指定値を超えるまで,10キロバイト単位でデータを連続して送信します。

復旧処理については,「9.3.2(5) クラスタの復旧処理」を参照してください。スケールアウト処理については,「9.3.2(6) クラスタのスケールアウト処理(EADSサーバの追加)」を参照してください。

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

注意事項

復旧処理およびスケールアウト処理では,最低1個のデータを送信します。そのため,このパラメタにEADSサーバに格納しているデータのサイズよりも小さい値を指定しても,送信量を制限することはできません。

(g) eads.rebalance.transfer.datasize

リバランス処理のデータ転送で送信するデータサイズ(単位:バイト)を指定します。

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

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

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

eads.rebalance.transfer.intervalパラメタに指定した間隔で,このパラメタの指定値を超えるまで,10キロバイト単位でデータを連続して送信します。

注意事項

リバランス処理では,最低1個のデータを送信します。そのため,このパラメタにEADSサーバに格納しているデータのサイズよりも小さい値を指定しても,送信量を制限することはできません。

(h) eads.replication.fillgap.copy.datasize

EADSサーバに対して,更新操作の履歴の補完処理でデータをコピーする際,1回当たりに送信するデータサイズ(単位:バイト)を指定します。

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

次の計算式から見積もってください。

更新操作の履歴の最大サイズ×合意処理で一度に合意できる処理の最大数

更新操作の履歴の最大サイズ:

更新操作の履歴の最大サイズ(単位:バイト)を見積もる計算式を次に示します。

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

(凡例)
  • MAX:

    計算結果の最も大きい値を選ぶことを示しています。

    (例)MAX(2,10)の計算結果は10となります。

  • keyの最大サイズ:

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

  • valueの最大サイズ:

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

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

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

合意処理で一度に合意できる処理の最大数:

共通設定のeads.replication.preparationsの指定値

注意事項
  • メモリ使用量やCPU使用率に影響するため,必要以上に大きな値を設定しないでください。

  • このパラメタの指定値を超えるサイズのデータが送信されることがあります。

  • データサイズを小さく設定しても,最低1履歴分は補完処理が行われます。

(i) eads.admin.operation.resume.send.datasize

eztool resumeコマンド実行時に,1回で転送する差分のデータサイズ(単位:バイト)を指定します。

0を指定すると,1回の通信でデータ1つを送信します。

(j) eads.java.nio.maxCachedBufferSize

EADSサーバでキャッシュされる1ダイレクトバッファ当たりのサイズの上限を指定します。上限を設定することでダイレクトバッファのメモリ使用量を制限できます。

このパラメタに指定した値は,システムプロパティjdk.nio.maxCachedBufferSizeに設定されます。

このパラメタに値を指定しなかった場合,または0〜263−1の範囲外の値もしくは数値以外を指定した場合は,263−1として扱われ,無制限となります。

このパラメタにはeads.server.connection.buffersizeパラメタと同じ値を指定することを推奨します。ただし,eads.server.nonBlocking.enableパラメタの指定値がfalse,かつeads.server.connection.buffersizeパラメタの指定値が8192未満の場合は,8192を指定することを推奨します。

EADSサーバの処理性能を重視する場合は,パラメタに値を指定しないか,またはEADSクライアントとEADSサーバ間で通信するデータの最大サイズを設定してください。

注意事項
  • このパラメタに1024未満の値を指定すると,性能が大きく劣化することがあります。

  • このパラメタに指定した値以上のデータサイズを扱うリクエストでは,このパラメタに値を指定しない場合に比べて,性能が劣化することがあります。

(2) 共通設定ファイル

(a) eads.cache.key.maxsize

クラスタに格納できるkeyの最大サイズ(単位:バイト)を指定します。

このパラメタに指定したサイズでkeyの格納領域を確保します。

keyの最大サイズを制限することで,デフォルトのまま使用するよりも,keyが格納されるJavaヒープのサイズを小さく設計することができます。

注意事項
  • keyの最大サイズを大きく設定したクラスタで出力されたストアデータファイルは,それよりも小さく設定したクラスタでは読み込めないことがあります。

  • ディスクキャッシュ,および2Wayキャッシュを使用する場合,keyの最大サイズを大きく設定したクラスタで出力されたキャッシュデータファイルとキャッシュインデックスファイルは,それよりも小さく設定したクラスタでは,データの再配置に使用できないことがあります。

(b) eads.replication.preparations

合意処理で,一度に合意できる処理の最大数を指定します。

同時に実行される更新操作が多い場合,大きな値を設定することでスループットが向上する場合がありますが,デフォルト値のままにしておくことを推奨します。

(c) eads.replication.external.heapsize

更新操作の履歴が格納される領域のサイズ(単位:メガバイト)を指定します。

このパラメタの指定値が,次のどちらかを満たす場合,EADSサーバの起動に失敗するので注意してください。

(d) eads.java.heapsize

keyが格納されるJavaヒープのサイズ(単位:メガバイト)を指定します。

(e) eads.java.external.heapsize

valueおよび更新操作の履歴が格納されるExplicitヒープのサイズ(単位:メガバイト)を指定します。

指定したExplicitヒープサイズの3%(メガバイト単位で小数点以下は切り上げ)は管理領域として使用されます。

このパラメタの指定値が,次のどちらかを満たす場合,EADSサーバの起動に失敗するので注意してください。

(f) eads.java.metaspace.maxsize

metaspace領域のサイズ(単位:メガバイト)を指定します。

metaspace領域は,ロードされたEADSサーバ,ユーザファンクションのclassなどの情報が格納される領域です。

(g) eads.cache.limiter.enable

データ総量監視機能を有効にするかどうかを指定します。

データ総量監視機能を有効にすると,データの格納先の容量が不足することが予想される場合に,その処理をエラーとすることで,EADSサーバがダウンすることを防ぎます。

true:

データ総量監視機能を有効にします。

false:

データ総量監視機能を無効にします。

(h) eads.cache.keyCount

データ総量監視機能で監視する,1レンジ当たりのデータ件数を指定します。

eads.cache.limiter.enableパラメタにfalseを指定している場合(データ総量監視機能が無効になっている場合),このパラメタの指定値は無効となります。

(i) eads.server.nonBlocking.external.heapsize

ノンブロッキングI/O通信バッファサイズ(単位:メガバイト)を指定します。詳細は,「7.8.3 ノンブロッキングI/O通信制御に依存するパラメタ」のeads.server.nonBlocking.external.heapsizeパラメタを参照してください。

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

(a) eads.client.connection.buffersize

EADSクライアントがデータの送受信で使用するバッファのサイズ(単位:バイト)を指定します。