0

さまざまな種類のエラー (Memcached ノードのクラッシュ、高遅延など) が発生した場合の Memcached の態度を判断するために、いくつかの実験を行っています。クラッシュの場合、failOver は私が期待したものではありません。

私にとっては、memcached クライアントがクラッシュし、いくつかのオプションが有効になっている場合、memcached サーバーはしばらくしてから落ちたノードの使用を停止し、残りのノードのみを使用する必要があります。

実験の開始時に、2 つの memcached クライアントと 1 つのサーバーをリクエスト ジェネレーターと共に使用し、それらに 10000 のリクエストを格納し、リクエストはクライアント ノード間で均等に分散されます。

次に、ノードにクラッシュを注入すると、残りのノードはデッド ノードからのリクエストを取得しません。新しいセットが必要で、残りのノードで完了します。

リクエスト ジェネレーターはbrutisで、毎回 1 つの set と 9 つの get を実行します。

使用されるオプションは (OPT_REMOVE_FAILED_SERVERS, true) です。

libmemcached-1.0.16、memcached-1.4.15 を使用しています。memcached の PHP バージョンは 2.1.0 です。

削除された後、ハッシュ関数が生きているノードにのみ送信されるようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

CONSISTENT ハッシュを使用する必要があります。 $memcache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

現在、php5-memcached:2.0.1 および libmemcached:1.0.8 に対してこれをテストしていますが、フェイルオーバー オプションのテストには多くの問題があります。

ただし、最初に、コンシステント ハッシュを設定すると、停止したサーバーで 2 回ヒットした後、停止したサーバーのすべてのキーが他のサーバーに分散されます。

于 2013-12-14T14:23:08.007 に答える