Hitachi

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


4.1.2 Javaヒープサイズを見積もる

Javaヒープサイズを見積もる計算式を次に示します。

〈この項の構成〉

(1) 1EADsサーバ当たりのJavaヒープサイズを見積もる

1EADsサーバ当たりのTenured領域サイズを3倍にした値がJavaヒープサイズとなります。

算出した値は,起動設定のeads.java.heapsizeパラメタに指定します。デフォルトは3ギガバイトです。

参考

ディスク上にキャッシュを作成する場合は,そのキャッシュが使用する1EADsサーバ当たりのメモリ使用量の合計を,Javaヒープサイズに加算します。見積もりについては,「4.1.2(2) ディスク上のキャッシュが使用するJavaヒープサイズを見積もる」を参照してください。

Javaヒープサイズ(単位:メガバイト)=

 {(クラスタに格納できるkeyの最大サイズ(単位:バイト)+750バイト)

 ×1EADsサーバに格納するデータ件数

 +(クラスタに格納できるkeyの最大サイズ(単位:バイト)+250バイト)

 ×グループ名の数※1

 +(EADsサーバへの最大同時接続数×データの多重度)

 ×((データの送受信バッファのサイズ(単位:バイト)×2+15×1,024)

 +(データの送受信バッファのサイズ(単位:バイト)×2+3,072))※2

 +EADsサーバ数×409,600バイト

 +更新操作の履歴の管理で使用するJavaヒープ領域(単位:バイト)

 +縮退処理・復旧処理で使用するJavaヒープ領域(単位:バイト)

 +ユーザイベントハンドラで使用するJavaヒープ領域(単位:バイト)}

 ×3÷1,0242

注※1

グループを階層化している場合は,先頭のグループ名の数です。

注※2

この括弧内の計算式は64キロバイト単位で切り上げて見積もってください。

クラスタに格納できるkeyの最大サイズ(単位:バイト):

クラスタ定義のeads.server.max_key_sizeパラメタの指定値

EADsサーバへの最大同時接続数:

サーバ定義のeads.server.max_connectionsパラメタの指定値

データの多重度:

クラスタ定義のeads.replication.factorパラメタの指定値

データの送受信バッファのサイズ(単位:バイト):

サーバ定義のeads.connection.buffersizeパラメタの指定値

更新操作の履歴の管理で使用するJavaヒープ領域(単位:バイト):

更新操作の履歴の管理で使用するJavaヒープ領域を見積もる計算式を次に示します。

更新操作の履歴の管理で使用するJavaヒープ領域(単位:バイト)=

 3,584×(更新操作の履歴が保持される最大数

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

 ×(データの多重度×2−1)×キャッシュ数

 +16×合意メッセージの送信キューの長さ×(EADsサーバ数−1)

更新操作の履歴が保持される最大数:

更新操作の履歴が保持される最大数を見積もる計算式を次に示します。

更新操作の履歴が保持される最大数=

 (ハートビートのタイムアウト時間÷1,000)

 ×1EADsサーバへのデータの更新操作のスループット(単位:件/秒)

ハートビートのタイムアウト時間:

 サーバ定義のeads.cluster.heartbeat.timeoutパラメタの指定値

注※

キャッシュごとにスループットが大きく異なる場合は,キャッシュごとに算出したスループットのうち,最大の値を代入してください。

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

クラスタ定義のeads.cache.prepare.numパラメタの指定値

データの多重度:

クラスタ定義のeads.replication.factorパラメタの指定値

合意メッセージの送信キューの長さ:

サーバ定義のeads.consensus.message.send.queuesizeパラメタの指定値

縮退処理・復旧処理で使用するJavaヒープ領域(単位:バイト):

縮退処理および復旧処理で使用するJavaヒープ領域の最大値をそれぞれ見積もり,どちらか大きい方の値を代入してください。

縮退処理で使用するJavaヒープ領域(単位:バイト)=

 (合意処理で一度に合意できる処理の最大数×2

 ×更新操作の履歴の最大サイズ(単位:バイト)

 ×(キャッシュ単位に行われる処理の最大同時実行スレッド数

 +キャッシュ数)+(データの多重度−1)×キャッシュ数

 ×更新操作の履歴の補完処理で送信するデータサイズ(単位:バイト))

 ×MIN(4×(データの多重度−1),EADsサーバ数−1)

復旧処理で使用するJavaヒープ領域(単位:バイト)=

 更新操作の履歴が格納される領域のサイズ(単位:メガバイト)×1,0242

 ÷(データの多重度×2−1)

 +復旧処理で送信するデータサイズ(単位:バイト)

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

クラスタ定義のeads.cache.prepare.numパラメタの指定値

更新操作の履歴の最大サイズ(単位:バイト):

更新操作の履歴の最大サイズを見積もる計算式を次に示します。

更新操作の履歴の最大サイズ(単位:バイト)=

 クラスタに格納できるkeyの最大サイズ+valueの最大サイズ×2

クラスタに格納できるkeyの最大サイズ:

 クラスタ定義のeads.server.max_key_sizeパラメタの指定値

valueの最大サイズ:

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

キャッシュ単位に行われる処理の最大同時実行スレッド数:

サーバ定義のeads.cluster.controller.cache.max_execute_threadsパラメタの指定値

このパラメタに0を指定している場合,データの多重度−1を代入します。

データの多重度:

クラスタ定義のeads.replication.factorパラメタの指定値

更新操作の履歴の補完処理で送信するデータサイズ(単位:バイト):

サーバ定義のeads.consensus.fillgap.copy.dataSizeパラメタの指定値

MIN:

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

(例)MIN(3×6,4+7)の計算結果は11となります。

更新操作の履歴が格納される領域のサイズ:

サーバ定義のeads.consensus.external.heapsizeパラメタの指定値

見積もりについては,「4.1.3(2) 更新操作の履歴が格納される領域のサイズ」を参照してください。

復旧処理で送信するデータサイズ:

復旧処理で送信するデータサイズをキャッシュごとに見積もり,その中で最大の値を代入してください。

ユーザイベントハンドラで使用するJavaヒープ領域(単位:バイト):

ユーザイベントハンドラで使用するJavaヒープ領域を見積もる計算式を次に示します。ただし,ユーザイベントハンドラを使用しない場合は0としてください。

ユーザイベントハンドラで使用するJavaヒープ領域(単位:バイト)=

 (クラスタに格納できるkeyの最大サイズ(単位:バイト)+100バイト)

 ×MIN(データ操作の最大同時実行スレッド数+ユーザファンクション全体の最大同時実行スレッド数,

 EADsサーバへの最大同時接続数)

クラスタに格納できるkeyの最大サイズ(単位:バイト):

クラスタ定義のeads.server.max_key_sizeパラメタの指定値

MIN:

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

(例)MIN(3×6,4+7)の計算結果は11となります。

データ操作の最大同時実行スレッド数:

サーバ定義のeads.server.cache.max_execute_threadsパラメタの指定値

ユーザファンクション全体の最大同時実行スレッド数:

サーバ定義のeads.server.function_container.max_execute_threadsパラメタの指定値

EADsサーバへの最大同時接続数:

サーバ定義のeads.server.max_connectionsパラメタの指定値

(2) ディスク上のキャッシュが使用するJavaヒープサイズを見積もる

ディスクキャッシュ,および2Wayキャッシュを使用する場合は,各キャッシュが使用するJavaヒープサイズを求めます。

ディスクキャッシュ,および2Wayキャッシュ1つ当たりのJavaヒープサイズを見積もる計算式を次に示します。この計算式でキャッシュごとに見積もったあと,算出した値を合計します。その値を「4.1.2(1) 1EADsサーバ当たりのJavaヒープサイズを見積もる」で見積もったJavaヒープサイズに加算します。