私の質問は、PHP Memcache 拡張機能の addServer 関数の「重み」パラメーターに関連しています。
ここ数か月、すべてのサーバーで「重み = 1」を使用しています。現在、以下の構成を適用して、最終的に「10.10.10.3」をローテーションから削除し、データ損失を最小限に抑えようとしています。
新しい重み値が設定されているため、PHP クライアントは、以前はフェッチできたキーの値を取得できません。「重み = 1」に戻すと、問題なくすべてのキーをフェッチできます。
「Memcache::addServer」で「weight」オプションを正しく使用するために不足している構成や何かがありますか?
ご協力ありがとうございました。
$hosts = array(
array('ip' => '10.10.10.1', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.2', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.3', 'port' => 11211, 'weight' => 1),
array('ip' => '10.10.10.4', 'port' => 11211, 'weight' => 100),
);
$memcache = new Memcache();
foreach($hosts as $host) {
$host['port'] = isset($host['port']) ? (int) $host['port'] : 11211;
$host['weight'] = isset($host['weight']) ? (int) $host['weight'] : 1;
$memcache->addserver($host['ip'], $host['port'], false, $host['weight'], 1, 15);
}
PHP バージョン= 5.3.10
Memcache PHP 変数
- memcache サポート => 有効
- memcache.allow_failover => 1 => 1
- memcache.chunk_size => 32768 => 32768
- memcache.compress_threshold => 20000 => 20000
- memcache.default_port => 11211 => 11211
- memcache.hash_function => crc32 => crc32
- memcache.hash_strategy => 一致 => 一致
- memcache.lock_timeout => 15 => 15
- memcache.max_failover_attempts => 20 => 20
- memcache.protocol => ascii => ascii
- memcache.redundancy => 1 => 1
- memcache.session_redundancy => 2 => 2
Memcached バージョン
10.10.10.1 / 10.10.10.2 / 10.10.10.3 は 1.4.5 を実行しています
10.10.10.4 は 1.4.4 を実行しています