Couchbase Serverはキャッシングレイヤーに格納されているデータを積極的に管理しており、これはクライアントによって頻繁にアクセスされている情報や、迅速な読み取りと書き込みを有効化する必要のある情報を含んでいます。あまりに多くのアイテムがRAMにあるとき、Couchbase Serverは空き領域を作成し、システムの性能を維持するためにあるデータを削除します。この処理はワーキングセットの管理と呼ばれており、ワーキングセットとしてRAMにあるデータセットを参照します。
一般的に、ワーキングセットは、システムで頻繁に使用されている、そしてそのため高速なアクセスを必要としているキー、メタデータ、そして関連するドキュメントのすべてで構成されます。RAMからデータを削除するためにサーバが実行する処理は排出とよばれ、この処理をサーバが実行するとき、RAMからドキュメントを削除しますが、アイテムのキーやメタデータは削除しません。RAMにキーとメタデータを保持しておくことは、システムで3つの重要な目的を提供します:
クライアントがそのキーに対するリクエストを送信した場合、Couchbase ServerはRAMに残っているキーとメタデータを使用します。サーバはディスクからアイテムを取り出そうとし、RAMにそれを戻します。
サーバはmiss accessのためにもRAMのキーやメタデータを使用します。そうすることで、アイテムが存在しないかどうかを高速に判定し、存在しない場合追加するというようなアクションを実行できるようになります。
最後に、Couchbase Serverでの有効期限切れ処理は、期限切れアイテムの迅速なスキャン、そして後でディスクからそれらを削除するためにRAMのメタデータを使用します。この処理は期限切れページャとよばれ、デフォルトでは60分ごとに実行されます。ページャ、およびその設定変更についての詳細は、「ディスククリーンアップ間隔の指定」を参照してください。
アイテムページャを理解する
定期的に実行され、RAMからドキュメントを削除する処理は、アイテムページャとよばれます。低水準値として知られているしきい値に達したとき、このプロセスはノード上でRAMからアクティブでないレプリケーションデータを排出し始めます。アイテムで使用されているRAMの量が高水準値という上限のしきい値に達した場合、レプリケーションデータおよびクライアントから作成されたアクティブデータの両方を排出します。アイテムページャはRAMの消費量が低水準値を下回るまでRAMからアイテムを追い出し続けます。高水準値と低水準値の両方は、5577375744 bytesのようにRAMの絶対量として表されます。
これらの設定のいずれかを変更するとき、60%のようにノードに対するのRAM全体の割合か、バイトの絶対値を指定することができます。Couchbase Server 2.0では、デフォルトの設定のまま使用することを推奨しており、これは60%の低水準値と75%の高水準値となっています。この設定を変更する方法の詳細については、「追い出し用のしきい値の変更」を参照してください。
Not-Frequently-Used アイテムを理解する
サーバ内のすべてのアイテムは、アイテムが最近アクセスされたかどうかを示すメタデータを1ビット含んでおり、このメタデータはnot-recently-usedの略語であるNRUとして知られています。アイテムが最近使用されていない場合、そのアイテムは高水準値を超えていると排出の候補となります。高水準値を超えたとき、アイテムページャは次の2つのフェーズでRAMからアイテムを排除します:
NRUに基づいて排出します。アイテムをNRUでスキャンし、頻繁に利用されていないすべてのアイテムを追い出します。
アルゴリズムに基づいて追い出します。アイテムページャがあまり頻繁に使用されていないアイテムをすべて削除しても、高水準値はまだ超えている場合、ページャはRAMからアクティブなアイテムでさえも削除し始めます。ページャは各ノードからランダムなレプリカデータの60%とアクティブなデータの40%のみを追い出そうとします。
アイテムのNRUを変更する2つのプロセスがあります。1)クライアントがアイテムを読み書きする場合、サーバはそのアイテムが最近使用されたとして指定します。2)Couchbase ServerにはRAM内の最近使用されたアイテムの一覧を作成する日次の処理もあります。処理が実行された後、サーバはすべてのアイテムが最近使用されていないと指定します。したがって、これら2つのプロセスがNRUを変更し、それゆえどのアイテムを排出の候補にするかに影響することに注意してください。アクセススキャナの詳細については、「サーバのウォームアップのハンドリング」を参照してください。
排出処理に影響を与えるCouchbase Serverの設定を調整することができます。そうすることで、アイテムを追い出す前に消費しても構わないRAMの割合を示すことができ、もしくは元のデータよりもレプリカデータの方が頻繁に排出を行うかどうかを示すことができます。Couchbase Server 2.0ではデフォルトのまま利用することを推奨します。
排出の設定を変更する方法については、「追い出し用のしきい値の変更」を参照してください。