Hitachi

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


4.1.4 EADSサーバのメモリ使用量を見積もる

EADSサーバのメモリ使用量を見積もる計算式を次に示します。

EADSサーバのメモリ使用量※1(単位:メガバイト)=

 Javaヒープサイズ+Explicitヒープサイズ+Metaspace領域サイズ+658

 +1×1EADSサーバプロセス当たりのスレッド数

 +{MIN(MAX(データの送受信バッファのサイズ,8,192),OSが許可する最大TCP受信バッファサイズ)

 +MIN(MAX(データの送受信バッファのサイズ,8,192),OSが許可する最大TCP送信バッファサイズ)}

 ×EADSサーバへの最大同時接続数÷1,0242※2

 +ダイレクトバッファ領域のサイズ

注※1

ユーザファンクションを使用する場合は,EADSサーバのメモリ使用量にユーザファンクションで使用するメモリ量を加算してください。

注※2

小数点以下の値は切り上げてください。

Metaspace領域サイズ:

共通設定のeads.java.metaspace.maxsizeパラメタの指定値

MIN:

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

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

MAX:

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

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

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

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

OSが許可する最大TCP受信バッファサイズ(単位:バイト)

OSが提供するTCP受信バッファサイズの制限方法を参照してください。

OSが許可する最大TCP送信バッファサイズ(単位:バイト)

OSが提供するTCP送信バッファサイズの制限方法を参照してください。

1EADSサーバプロセス当たりのスレッド数:

4.3.1(1) 1EADSサーバプロセス当たりのスレッド数」を参照してください。

ダイレクトバッファ領域のサイズ:

4.1.4(1) ダイレクトバッファ領域のサイズ」を参照してください。

〈この項の構成〉

(1) ダイレクトバッファ領域のサイズ

EADSサーバプロセスとTCPソケットの間で,データのやり取りをするためのダイレクトバッファ領域のサイズを見積もる計算式を次に示します。

■ノンブロッキングI/O通信制御を使用しない場合

ダイレクトバッファ領域のサイズ(単位:メガバイト)=

 {EADSサーバへの最大同時接続数×EADSクライアントとの通信での使用量

 +2×(EADSサーバ台数−1)×合意メッセージ送受信での使用量

 +3×データ転送での使用量

 +EADSクライアントとの通信での一時的使用量

 +EADSサーバ間の通信での一時的使用量

 +1,048,576

 }÷1,048,576

注※

小数点以下の値は切り上げてください。

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

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

EADSクライアントとの通信での使用量:
eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:

次に示す値のうち,最も大きな値を代入してください。

  • 8192

  • keyサイズ+valueサイズ+128

  • replaceを使用する場合,引数に指定するkeyサイズ+2×valueサイズ+128

  • 一括操作または参照操作を実行する場合,eads.client.batchOperation.unitパラメタの指定値×(keyサイズ+valueサイズ)+128

  • ユーザファンクションを呼び出す場合,ユーザファンクション名のサイズ+実行時に指定するkeyサイズ+引数長と戻り値長のどちらか大きい方+128

eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:

eads.java.nio.maxCachedBufferSizeパラメタの指定値

合意メッセージ送受信での使用量:
データ転送での使用量:
EADSクライアントとの通信での一時的使用量:
  • eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:

    0を代入してください。

  • eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:

    eads.java.nio.maxCachedBufferSizeパラメタの指定値(EADSサーバでキャッシュされるダイレクトバッファ1つ当たりのサイズ)よりも大きいサイズのデータがEADSクライアントとの通信で扱われた場合,データのサイズに応じたダイレクトバッファが一時的に使用されます。

    EADSクライアントとの通信での一時的使用量を見積もる計算式を次に示します。

    EADSクライアントとの通信での一時的使用量(単位:バイト)=

     EADSサーバへの同時リクエスト数×EADSクライアントとの通信データサイズ

EADSサーバへの同時リクエスト数:

EADSサーバに同時に送信されるリクエストの数

EADSクライアントとの通信データサイズ:

eads.java.nio.maxCachedBufferSizeパラメタの指定値と次に示す値のうち,最も大きな値を比較してください。比較した値が等しい場合,またはeads.java.nio.maxCachedBufferSizeパラメタの指定値の方が大きい場合は0を代入してください。それ以外の場合は,比較した最も大きな値を代入してください。

  • 8192

  • keyサイズ+valueサイズ+128

  • replaceを使用する場合,引数に指定するkeyサイズ+2×valueサイズ+128

  • 一括操作または参照操作を実行する場合,eads.client.batchOperation.unitパラメタの指定値×(keyサイズ+valueサイズ)+128

  • ユーザファンクションを呼び出す場合,ユーザファンクション名のサイズ+実行時に指定するkeyサイズ+引数長と戻り値長のどちらか大きい方+128

なお,特定のリクエストだけEADSクライアントとの通信データサイズが極端に大きくなる場合,次のように特定のリクエストの同時リクエスト数と通信データサイズから特定のリクエストの使用量を個別に計算して,一時的使用量に合算してください。このとき,特定のリクエスト以外のEADSサーバへの同時リクエスト数には,全体の同時リクエスト数から特定のリクエストの同時リクエスト数を引いた値を代入してください。

EADSクライアントとの通信での一時的使用量(単位:バイト)=

 特定のリクエストAの同時リクエスト数×特定のリクエストAの通信データサイズ

 +特定のリクエストBの同時リクエスト数×特定のリクエストBの通信データサイズ

 :

 +特定のリクエスト以外のEADSサーバへの同時リクエスト数×EADSクライアントとの通信データサイズ

EADSサーバ間の通信での一時的使用量:
  • eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:

    0を代入してください。

  • eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:

    eads.java.nio.maxCachedBufferSizeパラメタの指定値(EADSサーバでキャッシュされるダイレクトバッファ1つ当たりのサイズ)よりも大きいサイズのデータがEADSサーバ間の通信で扱われた場合,データのサイズに応じたダイレクトバッファが一時的に使用されます。

    eads.java.nio.maxCachedBufferSizeパラメタの指定値と「更新操作の履歴の最大サイズ」を比較して,比較した値が等しい場合,またはeads.java.nio.maxCachedBufferSizeパラメタの指定値の方が大きい場合は0を代入してください。それ以外の場合は,次に示すEADSサーバ間の通信での一時的使用量の計算式の計算結果を代入してください。

    EADSサーバ間の通信での一時的使用量(単位:バイト)=

     4×(データの多重度−1)×更新操作の履歴の最大サイズ

データの多重度:

共通設定のeads.replication.factorパラメタの指定値

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

4.1.2(1)(c) 縮退処理・復旧処理・スケールアウト処理・リバランス処理で使用するJavaヒープ領域」で見積もった「更新操作の履歴の最大サイズ」の値

■ノンブロッキングI/O通信制御を使用する場合

ダイレクトバッファ領域のサイズ(単位:メガバイト)=

 {リクエスト処理スレッド数×EADSクライアントとの通信での使用量

 +2×(EADSサーバ台数−1)×合意メッセージ送受信での使用量

 +3×データ転送での使用量

 +EADSサーバ間の通信での一時的使用量

 +1,048,576

 }÷1,048,576

注※

小数点以下の値は切り上げてください。

リクエスト処理スレッド数:

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

EADSクライアントとの通信での使用量:

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

合意メッセージ送受信での使用量:
データ転送での使用量:
EADSサーバ間の通信での一時的使用量:
  • eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:

    0を代入してください。

  • eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:

    eads.java.nio.maxCachedBufferSizeパラメタの指定値(EADSサーバでキャッシュされるダイレクトバッファ1つ当たりのサイズ)よりも大きいサイズのデータがEADSサーバ間の通信で扱われた場合,データのサイズに応じたダイレクトバッファが一時的に使用されます。

    eads.java.nio.maxCachedBufferSizeパラメタの指定値と「更新操作の履歴の最大サイズ」を比較して,比較した値が等しい場合,またはeads.java.nio.maxCachedBufferSizeパラメタの指定値の方が大きい場合は0を代入してください。それ以外の場合は,次に示すEADSサーバ間の通信での一時的使用量の計算式の計算結果を代入してください。

    EADSサーバ間の通信での一時的使用量(単位:バイト)=

     4×(データの多重度−1)×更新操作の履歴の最大サイズ

データの多重度:

共通設定のeads.replication.factorパラメタの指定値

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

4.1.2(1)(c) 縮退処理・復旧処理・スケールアウト処理・リバランス処理で使用するJavaヒープ領域」で見積もった「更新操作の履歴の最大サイズ」の値