RAMは、通常、最も重要なサイジングのパラメータです。また、パフォーマンスと安定性に最も大きな影響を与えます。
クラスタに必要なメモリ量を決定する前に、"ワーキングセット"の概念を理解しておく必要があります。ある時点での"ワーキングセット"はアプリケーションがアクティブに利用しているデータのことです。全てのワーキングセットをメモリ上に乗せることが理想的です。
Couchbaseクラスタを、予定するワーキングセットのサイズと全データのサイズに応じてサイジングすることは非常に重要です。
Couchbaseで利用するRAMサイジングのゴールはワーキングセットに加え、全てのドキュメントID、ドキュメントIDメタデータをクラスタのメモリ内、かつ、Couchbaseがメモリデータの排出を始めるポイント付近(ハイウォータマーク)に収めることです。
ノード単位に必要となるメモリとディスク容量は以下の様々な変数に依存しています。
計算はバケット単位に行います
以下の計算はバケット単位の計算です。全てのバケットの計算結果を合計する必要があります。全てのバケットが同一の設定となっている場合、考慮すべきバケット単位のオーバヘッドが存在しないため、全てのデータを単一のバケットとして扱うことができます。
表4.1 入力変数
変数 | 内容 |
---|---|
総ドキュメント数 | 予定するドキュメント総数 |
IDサイズ | ドキュメントIDの平均サイズ |
ドキュメントサイズ | ドキュメントの平均サイズ |
レプリカ数 | 保持するオリジナルデータのコピー数 |
ワーキングセット率 | メモリ内に配置したいデータの割合 |
ノード単位のRAM容量 | Couchbaseに割り当てることが出来るRAM容量 |
以下は、必要なメモリの計算に使用する、定数であると仮定している項目です。
表4.2 定数
定数 | 内容 |
---|---|
ドキュメントメタデータ | これはCouchbaseがドキュメント毎のメタデータを保存するために必要なスペースです。ドキュメント当たり120バイト必要です。全てのドキュメントIDとそのメタデータは常にメモリ上に存在する必要があります。 |
SSDまたは回転式ディスク | SSDは優れたI / Oパフォーマンスを提供します。 |
オーバヘッド [a] | 一般的にSSDは回転式ディスクよりも高速であるため25%(0.25)、回転式(従来の)ハードディスクの場合30%(0.30)となります。 |
ハイウォータマーク | デフォルトでは、ノードに割り当てられたメモリの70%に設定されています |
[a] これはクラスタが保存する情報についてのメタデータを保存するために必要となる追加のオーバヘッドです。データセット用のRAM要件に対し、約25~30%余分に必要となります。 |
こちらが、クラスタのサイジングを行うための大まかなガイドラインです。
変数 | 計算値 |
---|---|
コピー数 | 1 + レプリカ数
|
全メタデータ [a] | (総ドキュメント数) * (ドキュメントメタデータ+ IDサイズ) * (コピー数)
|
全データセット | (総ドキュメント数) * (ドキュメントサイズ) * (コピー数)
|
ワーキングセット | 全データセット * (ワーキングセット率)
|
クラスタRAM容量 | (全メタデータ+ ワーキングセット) * (1 + オーバヘッド) / (ハイウォータマーク)
|
ノード数 | クラスタRAM容量 / ノード単位のRAM容量
|
[a] 全てのドキュメントIDとメタデータはメモリに存在する必要があります |
データサイズに関わらず、少なくともレプリカ数 + 1のノードが必要になります。
サイジング計算例
たとえば、8GBのマシンを持っていて、Couchbaseに6 GBを使用する場合:
ノード数 = クラスタRAM容量 / ノード単位のRAM容量 = 7.9 GB/6GB = 1.3 つまり 2 ノード
RAMの割当
他のプログラムを実行する場合、ノード単位のRAM容量に全ての物理RAMを割り当てることはできません。