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通信制御を使用しない場合は,ノンブロッキングI/O通信制御を使用しない場合の計算式で見積もってください。
-
ノンブロッキングI/O通信制御を使用する場合は,ノンブロッキングI/O通信制御を使用する場合の計算式で見積もってください。
- ■ノンブロッキング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パラメタを指定していない場合:
「4.1.2(1)(c) 縮退処理・復旧処理・スケールアウト処理・リバランス処理で使用するJavaヒープ領域」で見積もった「更新操作の履歴の最大サイズ」とeads.replication.connection.buffersizeパラメタの指定値のどちらか大きい方
-
eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:
eads.java.nio.maxCachedBufferSizeパラメタの指定値をeads.replication.connection.buffersizeパラメタの指定値の倍数に切り上げた値
-
- データ転送での使用量:
-
-
eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:
keyサイズの最大値+valueサイズの最大値+128
-
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.java.nio.maxCachedBufferSizeパラメタを指定していない場合:
「4.1.2(1)(c) 縮退処理・復旧処理・スケールアウト処理・リバランス処理で使用するJavaヒープ領域」で見積もった「更新操作の履歴の最大サイズ」とeads.replication.connection.buffersizeパラメタの指定値のどちらか大きい方
-
eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:
eads.java.nio.maxCachedBufferSizeパラメタの指定値をeads.replication.connection.buffersizeパラメタの指定値の倍数に切り上げた値
-
- データ転送での使用量:
-
-
eads.java.nio.maxCachedBufferSizeパラメタを指定していない場合:
keyサイズの最大値+valueサイズの最大値+128
-
eads.java.nio.maxCachedBufferSizeパラメタを指定している場合:
-
- 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ヒープ領域」で見積もった「更新操作の履歴の最大サイズ」の値
-