Re[2]: nginx и несколько memcached серверов
Михаил Монашёв
postmaster на softsearch.ru
Вт Мар 23 22:31:44 MSK 2010
Здравствуйте, mente.
m> nginx по умолчанию использует остаток от деления?
m> Или все тот же memcached_hash, но с дефолтными опциями?
m> Пробовал без ketama_points в memcached_hash и
m> OPT_LIBKETAMA_COMPATIBLE ставил на false, результат был 40% не
m> найдено.
m> Не сильно изменилось :-/.
m> Есть подозрение, что memcached_hash вообще не работает, т.к.
m> если убрать эту опцию, то процент промахов тот же.
Он прекрасно работает, во всяком случае у меня на nginx 0.6.31 . Оба
его алгоритма распределения ключей совпадают с алгоритмом для
перлового модуля Cache::Memcached::Fast. Распределение ключей
алгоритмом, основанном на остатке от деления, полностью совпадает с
распределение, которое даёт оригинальный клиентский модуль
разработчиков мемкешеда Cache::Memcached.
Без опции работает балансер, который ходит по ВСЕМ мемкешедам, пока не
найдёт нужный ключ или не кончатся бэкенды. Если у Вас процент
промахов тот же, то попробуйте telnet-ом сходит к мемкешеду, может там
с таким ключом ни на одном бэкенде нет ничего, ибо процент промахов
должен стать равен 0%.
Я бы смотрел или в сторону патчинга пхп-клиента или в сторону
добавления в memcached_hash ещё одного алгоритма балансировки,
совместимого с php. Стало бы что-то вроде:
upstream memcached_upstream{
memcached_hash ketama_points=100;
server a.com:21201 weight=1;
server b.com:21201 weight=1;
}
Сделать это наверное не сложно, ибо базой для него станет один из
текущих алгоритмов.
Ещё можно написать в лист http://list.openhack.ru/Lists/talk/ и
попросить Томаша или принять Ваш патч с новым балансировщиком или
попросить написать его самому, указав на описание алгоритма в
php-клиенте.
--
С уважением,
Михаил Монашёв
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
Подробная информация о списке рассылки nginx-ru