クラスタは与えられたノードで構成されるクラスタ内のノード間でデータレプリケーションをいくつかのレベルで実行するように設定されています。すべてのノードはアクティブデータとレプリケーションデータの両方を持っています。アクティブデータはクライアントからノードに書き込まれたデータすべてであり、一方レプリケーションデータはクラスタの他のノードからのデータのコピーです。データレプリケーションはクラスタでの高可用性を可能にします。クラスタ内のあるノードに障害が起きても、データはレプリカで利用可能です。
与えられたノード上で、アクティブとレプリカのデータ両方がディスクに書き込まれる前にディスク書き込みキューで待機される必要があります。ノードが書き込みで高負荷となっている場合、レプリケーションキューはレプリカとアクティブのデータが永続化を待っているので過負荷となります。
デフォルトでは、ノード上のディスク書き込みキューが100万アイテムもしくは10%を含んでいるときに、ノードはバックオフメッセージを送信します。他のノードがこのメッセージを受け取ると、レプリカデータを送信する頻度を低くします。このデフォルトを、現在のレプリカパーティション内の全アイテムの10%未満の範囲で、指定した数字で設定することができます。たとえば、ノードが2000万アイテムを保持している場合、ディスク書き込みキューが200万アイテムに達すると、バックオフメッセージをレプリカデータを送信したノードへ送信します。この設定を変更するためには、Couchbaseコマンドラインツール、cbepctlを使用します。
shell> ./cbepctl 10.5.2.31:11210 -b bucketname -p bucketpassword set tap_param tap_throttle_queue_cap 2000000
この例では、200万アイテムもしくはすべてのアイテムの10%のどちらかより大きくなったときに、ノードがレプリケーションバックオフのリクエストを送信するように指定しています。次のような応答を受け取るでしょう:
setting param: tap_throttle_queue_cap 2000000
この次の例では、レプリケーションストリームを管理するために使用されるデフォルトのパーセンテージを変更します。ディスク書き込みキュー内のアイテムが、このパーセンテージまたは指定したアイテム数より大きくなった場合、レプリケーションリクエストの処理速度が遅くなります。
shell> ./management/cbepctl 10.5.2.31:11210 set -b bucketname tap_param tap_throttle_cap_pcnt 15
この例では、レプリカノードで全アイテムの15%にしきい値を設定しています。ノード上のディスク書き込みキューはこの点に達すると、他のノードにレプリケーションバックオフのリクエストを送信します。
このツールはノード毎、バケット毎の処理であることに注意してください。この操作を実行する場合、クラスタ内のノードのIPアドレスと名前付きバケットを指定する必要があることを意味します。名前付きバケットを指定しない場合、サーバは指定されたノードに存在する任意のデフォルトのバケットに設定を適用します。クラスタ全体に対してこの操作を実行する場合、そのクラスタに存在するすべてのノード/バケットの組み合わせに対してコマンドを実行する必要があります。
この設定を変更する方法の詳細については、「cbepctlツール」を参照してください。