Установка memcached для wordpress

При достижении определенных порогов нагрузки на веб-ресурс, начинаешь задумываться об использовании вспомогательных средств, например кеширования. Кешировать можно практически все, начиная со специальных плагинов для вордпресса, заканчивая кешированием вебсервера.

Memcached — система для кеширования данных в оперативную память. Используется для снижения нагрузки на БД.

Установка memcached на сервер производится отдельно. Для начала, нужно memcached скачать на свой сервер. Конфигурационного файла нет у memcached, настройка поэтому осуществляется при запуске демона.

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211

Команда означает, что memcached стартует как демон, с 2г памяти и слушает порт 11211 на адресе 10.0.0.40

Небольшая заметочка с оффсайта.

Because a 32-bit process can only address 4GB of virtual memory (usually significantly less, depending on your operating system), if you have a 32-bit server with 4-64GB of memory using PAE you can just run multiple processes on the machine, each using 2 or 3GB of memory.

32-битные процессы не могут использовать более 4г оперативной памяти, поэтому на 32-битных архитектурах нужно запускать несколько процессов по 2-3г каждый.

Теперь включаем поддержку memcached в wordpress.

Само собой, php должен быть собран с поддержкой memcached –enable-memcache[=DIR].

Скачиваем memcached plugin for wordpress. Можно воспользоватся встроенным установщиком плагинов.

Копируем object-cache.php и memcached-client.php в папку wp-content (не в папку для плагинов)

Настройка memcached почти готова, теперь нужно указать $memcached_servers в wp-config.php. Это массив из айпи:порт. По умолчанию коннектится на 11211 порт на localhost.

Пример конфига memcached:

$memcached_servers = array('192.168.1.1:11211', '192.168.1.2:11211');

Полезные ссылки:
Настройка и использование memcached, оффсайт

0.00 avg. rating (0% score) - 0 votes

13 комментариев

  • Можешь подсказать как можно затюнинговать сервер?
    Сейчас у меня 384 Мб оперативы и проц 600 Мгц. Свободно оперативки —  129468k, средняя нагрузка — 0,5
    ПО: апач, еакселлератор, пхп,мускль
    На сервере стоит около 70 вордпресс и около 20 форумов. С форумами проблем нет, грузятся быстро. А вот вордпресс открывается от 5 до 20 секунд. Посещаемость — низкая, меньше 1000 уников на все сайты.
    Имеет ли смысл ставить энжиникс в качестве фронтенда? Чем еще можно ускорить?

    • Неплохо посмотреть в какую сторону тормоза, точнее из-за чего. Может нехватать оперативки, может не успевать диск писатся, может база не тянуть. Исходя из этого уже плясать
      Имеет смысл добавить ресурсов на твой вдс, для него уже я думаю предел вот-вот наступит.

  • Установил мемкашед, установил модуль мемкаш для пхп, установил эти файлики в вордпресс. Как можно проверить производительность memcached? Никакой разницы не почуствовал. Тестировал утилитой ab -с 10 -n 50. Одинаковые результаты, что до, что после.

    • количеством запросов к базе

  • И чет я не вкурил. Мемкашед может чтоли только с одним сайтом работать? Установил эти файлики на двух блогах. На одном -все ок, на другом -выдает контент из первого блога.

  • Надо будет опробовать, а то чувствую блог мой начинает подвисать

    • Михаил, а с чего подвисает? Посещаемость не такая уж высокая

  • Ad1ce, та же сама проблема 🙁 на одном сайте работает, а другой перестает открыватсья, как я понимаю нужно «соли» добавить для уникальности кэшей, но вот где не знаю 🙁

  • Alex Volkov, мне всегда казалось, что для вордпресса это не совсем требуется тут то запросов не очень много (если оптимизированная тема) можно снизить до 6-8 запросов (как-то встречал такую темку), в моей конечно много, но не считаю базу узким местом, тут больше жрет apache, но это только мое мнение

    • BFox, мне один пионэр как-то пытался блог заддосить, так вот база самая первая отвалилась. Так что фиг знает, узкое место база или нет.

  • Нашел решение для работы мемкэшеда с 2 и более сайтами на вордпрессе. В плагине необходимо заменить строчку:
    $this->blog_prefix = ( is_multisite() ? $blog_id : $table_prefix ) . ‘:’;
    на
    $this->blog_prefix = ( is_multisite() ? $blog_id : ‘www_lobachev_ru’ ) . ‘:’;
    где www_lobachev_ru — уникальная запись для каждого блога.

  • Alex Volkov, проверяя siege’ем обычно валится апач, все хочу попробовать php-fpm поставить вместо него, но все руки не доходят ) Пока nginx + apache хорошо себя ведут.
    А насчет ддоса, может у тебя тема тяжелая? И много запросов..

  • Это все конечно же круто, но в W3Cache этот функционал тоже заложен.
    Но все равно для wp база всегда является узким местом, если не вдаваться в жесткую игру с напильником.
    На днях нарвался на такую штуку, довольно претенциозную — http://www.mongopress.org/
    Мне кажется у wp будущее за nosql, тем более, что структура системы к этому располагает, ну а поиск по сайту можно и через sphinx сделать.
    Может уже кто-то ковырял это чудо — http://www.mongopress.org/ ?

css.php