Couchbase Serverは、システムの異なるコンポーネントにまたがって使用されるメモリを管理しています。
クラスタのノードの管理、ディスクとメモリ
Couchbase Serverはクラスタ内のノードのディスクとメモリ間のワーキングセットを自動的に管理し、保存します。これにより、クラスタに参加している複数のノードで利用可能なRAMより大きなワーキングセットを扱うことができます。高いスループットと低いレイテンシを保つには、Couchbase Serverは、常にメモリ内のすべての項目に関するメタデータを保持しなければなりません。
Couchbase Serverの設定には、メモリの割り当て量があります。Couchbase Serverは自動的に設定されたメモリの割り当て量に達すると、メモリからディスクへ項目を移行します。それらの項目が後でアクセスされた場合は、システムメモリへ移動されます。これらの操作は、効率を高めるためにバックグラウンドで定期的に実行されます。
現時点では、ディスク上の永続的なストレージの割り当てを定義する機能はありません。それは適切にディスク使用率を監視し、(Couchbaseからデータを削除するか、またはノード自体をアップグレードするか、複数のノードを追加することで容量を追加するかのどれか)アクションを実行する管理者次第です。
Couchbase Serverは、ディスクとメモリを管理するための統計に基づいてモニタおよび報告をします。あらゆる多階層キャッシュと同様に、データのワーキングセットがバケットで利用可能なRAM割り当て量(一次キャッシュ)を超えた場合は、ディスクアクセスによる高いレイテンシと、低いスループットのせいで、性能は極端に落ちてしまいます。システムの許容可能なパフォーマンスはアプリケーションによって異なります。チューニングが必要な場合には統計を監視する必要があります。
サーバの割り当て
各サーバノードがホストシステム上で利用可能なシステムのメモリ量を定義するメモリ割り当て量があります。クラスタ内の最初のノードに設定したメモリ割り当て量は、順次クラスタに参加する全てのノードに継承されます。最初のノード上で設定される最大メモリ割り当て量は、そのノード上の物理RAMの合計の80%以下である必要があります。メモリ割り当て量の1.25倍のメモリを持たないサーバはクラスタに参加することが出来ません(割り当て可能なメモリは物理RAMの80%までであるため)。スタンドアロンクラスタだったサーバが別のクラスタに参加する場合、メモリの割り当て量は、ノードが参加するクラスタから継承されます。
サーバノードは、ディスククォータを持っていません。システム管理者は、個々のサーバーノード上の空きディスク領域を監視する責任があります。クラスタ内の各サーバーノードは、データが格納されるディスク上の場所に独自のストレージパスを持っています。ストレージパスは、クラスタ内のすべてのサーバノードで同一である必要はありません。スタンドアロンクラスタだったサーバが別のクラスタに結合する場合でも、そのサーバー用のストレージのパスは変更されません。
バケットの割り当て
メモリクォータの割り当ては、バケット単位に制御されます。ノードあたりのメモリの固定量は、バケットが使用するために割り当てられます。ノードを追加または削除すると、バケットのサイズが変更されます。