Как справиться с MEMCACHED_SERVER_MARKED_DEAD? - PullRequest
0 голосов
/ 13 июля 2011

У меня есть кластер из 10 memcache, используя последовательное хеширование.Когда ключ, переданный в memcached_get(), ищется на недоступном сервере, я получаю только MEMCACHED_SERVER_MARKED_DEAD ответ (возвращаемое значение).

Я ожидаю, что в этом случае ключ должен быть перераспределен на следующий доступный сервер, и ядолжен получить NOTFOUND от следующего memcached_get() вызова.Однако я все еще получаю MEMCACHED_SERVER_MARKED_DEAD и поэтому не могу установить новое значение.

Я обнаружил, что могу позвонить memcached_behavior_set(..., MEMCACHED_BEHAVIOR_DISTRIBUTION).Это вызывает перераспределение хэша, и тогда оно работает так, как я хочу.Однако я не думаю, что это хороший подход.Это 1011 *

Ответы [ 2 ]

0 голосов
/ 17 июля 2011

Я нашел ответ сам.

https://bugs.launchpad.net/libmemcached/+bug/777672

Применение патча решило все мои проблемы. Заметьте, мне интересно, что он сломался с 0.39, и никто не заботился.

0 голосов
/ 16 июля 2011

Обычно вы хотите включить MEMCACHED_BEHAVIOR_DISTRIBUTION с самого начала, если вы имеете дело с несколькими пулами memcached. Так что да, это решение будет работать.

Если у вас возникли дополнительные проблемы, взгляните на MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS, которая автоматически удалит сбойные серверы из пула после x числа сбоев.

...