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