Установка Memcached на Debian Lenny

Memcached - это, коротко говоря, распределенная система кеширования объектов в памяти. Многие известные веб-сайты, такие facebook, slashdot и livejournal, используют memcached для того чтобы справляться с высокой нагрузкой. Использование memcached позволяет кешировать или только результаты выполнения самых тяжелых запросов к базе данных или даже сохранять в кеше текст сгенерированной веб-страницы полностью и за счет этого можно многократно повышать производительность веб-приложения.

Интерфейсы к memcached существуют для большинства самых распространенных языков программирования к которым конечно относятся и такие популярные в web языки как PHP, C, Java, Python, Ruby, Perl. В этой статье речь пойдет только об установке и мониторинге работы сервера memcached, но о том как происходит работа с memcached из PHP я обязательно остановлюсь подробнее в одном из следующих постов.

Установка memcached из репозитория

Удобство и простота установки программ является одним из главных преимуществ использования дистрибутивов Debian и Ubuntu. Вот и в этом случае всё что нам потребуется сделать для установки memcached - запустить с правами root такую команду:

aptitude install memcached php5-memcache

если вы также будете использовать для работы с memcached языки C, Perl или Python, можете сразу доустановить необходимые пакеты:

aptitude install libmemcache0 libcache-memcached-perl python-memcache

Конфигурация memcached

После установки пакета вы также получите готовый файл конфигурации программы в файле /etc/memcached.conf. Для первых экспериментов с программой этих настроек вполне достаточно - можно ничего не менять. Сервер запустится с правами nobody и будет принимать соединения только от локальных процессов через tcp-порт 11211 по адресу 127.0.0.1. Ограничение памяти для memcached будет установлено в размере 64MB. В дальнейшем вы сможете более точно настроить эти параметры в соответствии с вашими требованиями.

Проверка сервера

Перед тем как настраивать остальной софт для работы с memcached желательно сначала убедиться что он нормально работает. Самый простой способ проверки - установить соедининение при помощи программы telnet:

telnet 127.0.0.1 11211

Для сохранения объекта в кеше используется такая команда:

set <ключ> <флаг> <срок годности> <длина в байтах>

Для извлечения объекта из кеша команда такая:

get ключ_с_которым_сохранялся_объект

При правильно настроенном и работающем сервере у вас может получиться примерно такое содержание telnet-сессии:

set key1 1 0 21
this is a test string
STORED
get key1
VALUE key1 1 21
this is a test string
END

В этом примере строка “this is a test string” была сохранена в кеше с ключом key1 и была успешно получена назад по этому же ключу.

Мониторинг работы

Наблюдение за работой сервера memcached можно производить из специальных программ на любом из поддеживаемых языков:

  1. Для Perl можно посмотреть примеры на странице plugin-memcache. Если после запуска скриптов с указанной страницы вы получите ошибку no (Cache::Memcached not found) то проверьте что у вас установлен пакет libcache-memcached-perl (совет для Debian/Ubuntu)
  2. Для Python также потребуется установка дополнительного пакета python-memcache. Получить статистику из скрипта на Python можно будет примерно так:
    import memcache;
    print memcache.Client(['127.0.0.1:11211'], debug=0).get_stats()

    где 127.0.0.1 - ip-адрес сервера memcached, a 11211 - порт по умолчанию.

  3. Необходимое для PHP расширение php5-memcache уже упоминалось выше. Для получения статистики о работе используются функции Memcache::getStats и Memcache::getExtendedStats.

    Пример для PHP выглядит так:

    $mymemcache = new Memcache;
    $mymemcache->addServer('memcache_host', 11211);
    $server_stats = $mymemcache->getStats();

    Содержимое $server_stats после выполнения этих строк является ассоциативным массивом, который содержит всю доступную для скрипта информацию о работе сервера. Описание ключей массива приводится ниже:

    • pid - идентификатор процесса
    • uptime - время работы сервера
    • version - версия ПО
    • time - время в формате unixtimestamp
    • rusage_user - пользовательское время для процесса
    • rusage_system - системное время для процесса
    • curr_items - количество сохраненных объектов в памяти
    • total_items - сколько всего было сохранено объектов за время работы сервера
    • bytes - количество байт, которые занимают сохраненные объекты
    • curr_connections - количество открытых соединений
    • total_connections - сколько всего было открыто соединений
    • cmd_get - количество запросов на получение объектов из кеша
    • cmd_set - количество запросов на сохранение объекта в кеше
    • get_hits - количество запросов когда объект был успешно найден в кеше
    • get_misses - количество запросов к отсутствующим объектам
    • bytes_read - общее количество прочитанных байт из сети
    • bytes_written - общее количество отправленных байт
    • limit_maxbytes - ограничение памяти для хранения объектов

Если вам понравился этот сайт, вы можете подписаться на rss

Отзывы: Комментариев нет

Ваш отзыв

Имя (*)

E-mail (*)

Сайт

Сообщение

Архивы

службы мониторинга серверов