Дек 27 2008

Установка и настройка memcached

Когда занимаешься обслуживанием, проектированием, построением систем вебсерверов, живущих под большой нагрузкой, постоянно приходится искать все новые и новые пути оптимизации системы. Одно из направлений — это кеширование. Я шел по такому пути, изначально, когда производительность серверов уперлась в MySQL, ввели дисковый кеш, кешировали результаты выполнения SQL запросов, кешировали сами динамические страницы, в общем что можно было записать в виде файла, то и кешировали. Через небольшое время, а проект бурно развивался, заметили, что не смотря на заметное увеличение производительности, все начало упираться в производительность дисковой системы. Файлы кеша мелкие, но их становилось очень много и все начинало тормозить. Следующим этапом был диск в памяти, но опять ряд ограничений не позволил полностью решить проблему кеширования. А решением послужило внедрение memcached.

От MemoryDisk он отличался целым рядом полезных качеств, во первых доступ к содержимому, можно обеспечить по сети из любой нод системы, во вторых доступ по ключу значительно упрощает работу программиста, в третьих не надо заботиться об очистке устаревших объектов, в четвертых memcached защищен от переполнения, новый объект просто заместит собой устаревший. В общем преимуществ масса. И это логично, ведь memcached был разработан специально для ускорения работы LiveJournal. Теперь можно перейти непосредственно к установке. Установка производится из портов:

cd  /usr/ports/databases/memcached
make install clean

Меню настройки сборки содержит единственный пункт Enable data replication feature, его надо использовать если вы собираетесь организовать репликацию. Мне эта функция как то ни разу и не пригодилась.
После окончания установки, нужно немного поправить стартовый скрипт /usr/local/etc/rc.d/memcached, установить нужные флаги командной строки. Я устанавливаю флаг -m, в нем нужно указать сколько памяти, вы выделите под memcached. По умолчанию выделяется 64 мегабайта, что для крупного пректа мало. Следует только помнить что на 32bit системе максимум адресуется 4G.
Выбрав сколько памяти нам нужно выделить, установим разрешение на запуск memcached в /etc/rc.conf, внесем такую строку:

memcached_enable="YES"

Теперь запустим его:

/usr/local/etc/rc.d/memcached start

Остается упомянуть о том, что в MediaWiki присутствует поддержка memcached, есть плугин для WordPress, модуль для Drupal и Joomla. Nginx умеет напрямую работать с memcached, в этой схеме nginx на фронтеэнде проверяет наличие в memcached закешированной страницы, и отдает ее, если она есть или передает управление бекэнду, который отобразит страницу и попутно, создаст в кеше эту страницу.
И что существуют библиотеки для работы с memcached во всех современных языках программирования.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By bz, 09.06.2009 @ 10:42

    Для указания параметров достаточно прописать в /etc/rc.conf строчку
    memcached_flags=»-m 128″
    и вовсе незачем править стартап скрипт, который перезапишется при обновлении версии. Систему портов во Фре проектировали не совсем глупые люди ;)

Other Links to this Post


Украинская Баннерная Сеть