特定の構成に必要なメモリーの容量および区画数を計算できます。
必要なメモリーのサイズを設定するには、アプリケーション・データを 1 つの JVM にロードします。ヒープ使用量が 60% に達している場合、使用されるオブジェクトの数に注意してください。 この数値は、Java 仮想マシン のそれぞれの推奨されるオブジェクトの最大数です。最も的確なサイズ設定を行うには、現実に近いデータを使用します。索引もまたメモリーを消費するので、定義されているすべての索引をサイズ設定に含めてください。メモリー使用量のサイズ見積もり を行う最良の方法は、ガーベッジ・コレクション verbosegc 出力を実行することです。この出力 によって、ガーベッジ・コレクション後の数値が分かるからです。ヒープ使用量に ついては MBean またはプログラムでいつでも照会できますが、そういった照会ではヒープの現行スナップショットしか取得できません。このスナップショットには未収集のガーベッジが含まれている可能性があるため、この方法では消費メモリーは正確には示されません。
numShardsPerPartition = 1 + total_number_of_replicas
Java 仮想マシン 数 (minNumJVMs 値)
構成を拡張するには、まず保管する必要のある合計オブジェクトの最大数を決定します。必要 な Java 仮想マシンの数を決めるには、 次の式を使用します。minNumJVMS=(numShardsPerPartition * numObjs) / numObjsPerJVM
この値を切り上げて、最も近い整数値にしてください。断片数 (numShards 値)
最終的な増加サイズでは、それぞれの JVM に 10 個の断片を使用します。前述したように、各 JVM には、1 つのプライマリー断片と (N-1) 個のレプリカ断片があります。この場合、9 個のレプリカがあります。データ保管用に既に多数の Java 仮想マシンがある ため、Java 仮想マシンの数に 10 を掛けて、断片の 数を決定することができます。numShards = minNumJVMs * 10 shards/JVM
区画数
区画に 1 つのプライマリー断片と 1 つのレプリカ断片がある場合、区画には 2 つの断片 (プライマリーとレプリカ) があります。区画数は、断片数を 2 で割って、一番近い素数に丸めたものです。 区画に 1 つのプライマリーと 2 つのレプリカがある場合、区画数は、断片数を 3 で割って、一番近い素数に丸めたものになります。numPartitions = numShards / numShardsPerPartition
構成の開始
前述の計算 に基づいて、250 の Java 仮想マシンから始めて、5 年間 で 500 の Java 仮想マシンに増やします。 この構成を使用して、最終的なエントリー数に達するまで段階的な増加を管理 できます。この構成では、区画ごとに約 200,000 (500,000,000 のエントリーを区画数の 2503 で割ったもの) のエントリーが保管されます。numberOfBuckets パラメーターを次位の素数 (この例では 70887) までのエントリーを収めるマップで設定します。これにより約 3 の比率が保たれます。
Java 仮想マシンの最大数に達した場合
500 という Java 仮想マシンの最大数に達しても、データ・グリッドを拡張できます。Java 仮想マシン の数が 500 を超えるまでになると、各 JVM について断片数が 10 (推奨数) を下回り始めます。つまり断片が大きくなり始めます。これは問題となる場合があります。将来の成長を考慮しながら、サイズ設定処理を繰り返し、区画数を設定し直します。この作業では、データ・グリッド全体の再始動が必要になります。さもないとデータ・グリッド不足となります。