gunzip и балансер для memcached-а

Михаил Монашёв postmaster at softsearch.ru
Sun Feb 10 13:12:57 MSK 2008


Здравствуйте,

Мы тут написали несколько патчиков http://openhack.ru/nginx-patched .

1.  Балансировщик  запросов к мемкашеду. Сейчас каждый запрос стучится
по  всем  мемкашедам  апстрима  пока  не  найдёт  нужного ключика. Это
конечно  быстро,  но  неэффективно,  если  мемкашедов  много. Балансер
http://openhack.ru/nginx-patched/wiki/MemcachedHash          позволяет
обращаться   сразу   к  нужному  мемкашеду.  Реализовано  2  алгоритма
вычисления   нужного  мемкашеда:  остаток  от  деления  на  количество
серверов  и  Кетама.  Последний  позволяет добавлять новые мемкашеды с
лишь  частичным перераспределением ключиков между мемкашедами. Эти два
алгоритма     также    реализованы    в    нашем    перловом    модуле
http://openhack.ru/Cache-Memcached-Fast/wiki/Ru .

2.  Поддержка  502,  503,  504  и  507  ответов  от  бэкендов        в
proxy_next_upstream.  Если  на бэкенде стоит nginx , а за ним Апач, то
падение/торможение  апача приведёт к возврату 502 или 504 ошибки и она
отдастся  юзеру, что не всегда хорошо. В proxy_next_upstream добавлены
вышеперечисленные  коды  ответов,  дабы  избегать  подобных  ситуаций.
Правда  над  быть  осторожным  с их использованием, ибо тяжёлый запрос
может  завалить  все  бэкенды,  вместо одного. Большое спасибо Максиму
Дунину за частичную реализацию.

3.   http://openhack.ru/nginx-patched/wiki/MemcachedGzip  -  расжимает
полученный  от  мемкашеда  ответ,  если  он  был  сжат и браузер хочет
получить  несжатый  контент.  Экономится  память мемкашеда. Экономится
процессор:  разсжатие  дешевле  сжатия  и  большинству браузером нужен
именно сжатый контент.

Сейчас  nginx  со всеми этими изменениями работает на рабочих серверах
моих проектов. Т.е. можно предположить, что оно стабильное.

Буду  признателен  за тестирование, пожелания и комментарии. Можно или
тут или в листе на http://list.openhack.ru/Lists/talk/ .

Если  Максим  Дунин  не  против  (ибо он автор части кода, связанной с
proxy_next_upstream),  то  хотелось бы включить все перечисленные выше
разработки  в  главную  ветку. ngx_http_upstream_memcached_hash_module
реализован  в  виде  независимого  модуля,  но  потребовал  3-х мелких
патчиков     в    nginx.    memcached_gzip    -    это    доработанный
ngx_http_gzip_module.

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list