Распределенное кеширование - cacherouter

Прислано: andypost@drupal.org

пн, 14/07/2008 - 11:21

Потратил некоторое время на доводку модуля cacherouter который позволяет разные таблицы кеша направлять в разные источники хранения. Например, даннные таблицы cache, можно положить в оперативную память посредством xcache apc eaccelerator, а остальные таблицы раскидать по разным инстансам memcached или в один но в shared режиме. Модуль очень сырой, но рабтает достаточно стабильно. Есть много нареканий на shared режим в частности для memcache xcache apc - так как они не имеют своих механизмов блокировок, а использовать flock не очень хочется. Прилагаю свои доработанные модули для 5ки и 6ки. Для 5ки потребуется патчить ядро, эту информацию можно найти в оригинальном модуле, патч для 5.8 есть в issues. 6я версия не требует патча ядра.

PS: обе версии работают в данный момент на разных сайтах в конфигурации eacc + memcache и apc, остальные бэкенды не тестировались. В частности drupal.ru работает на eacc + 3 memcache.

PS2 вопросы и обсуждение в коментарии...

PS3 пакет для мониторинга memcache включен в поставку php_memcache (англ источник)

PS4 Версия для 6.x - если в администрировании вы выключаете сжатие GZip для страниц - нужно в cacherouter.inc (174 строка) закоментировать выдачу заголовка <?php header('Content-Encoding: gzip'); ?>

update: Исправлены небольшие ошибки, убраны отличия версии 5 и 6 в движке кеша (теперь они отличаются только оберткой).

Прикрепленный файлРазмер
cacherouter5.zip23.74 кб
cacherouter6.zip21.65 кб

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано gorr в пн, 14/07/2008 - 11:46.

Спасибо за работу! В закладки.


Опубликовано andypost@drupal.org в пн, 14/07/2008 - 12:02.

Доработки еще требуются - у меня расхождение с автором модуля (он предлагает хранить CACHE-TEMPORARY с ttl = 180 секунд, а мне кажется они должны чиститься как и в оригинатьльном cache.inc). Ожнь жестко стоит проблема чистки по маске, собственно она и вынуждает держать lookup таблицы, которые вызывают блокировки.


Опубликовано Kollo_dHerbois в пн, 14/07/2008 - 12:21.

Как раз хотел спросить про этот модуль. У кого-нибудь он работает в режима файл-кэш? Я поставил модуль, настроил на файл-режим, но что-то никаких изменений не заметил в работе сайта. В папку кэша ничего не записывается. /попробую эту версию, может, сработает/.


Опубликовано andypost@drupal.org в пн, 14/07/2008 - 13:18.

Файловую версию не бкатывал, кеширование на файлах лучше взять у Азарова. В данной версии нужно еще напильником пройтись... Но работать должно - кто-то в issues писал, что даже хороших результатов добиться удалось


Опубликовано neochief в пн, 14/07/2008 - 18:32.

Хоть к данной вещице подступал только раз и то, весьма поверхностно, все-равно, весьма благодарен за работу, потому что в будущем обязательно пригодится, причем многим.


Опубликовано Izem в ср, 23/07/2008 - 20:42.

Установил стандартный Cacherouter на D6 в режим 'file' - стало НАМНОГО быстрее. Хостинг - Лидерхост. Только, вот, не пойму, где же, всё-таки, файлы кэша хранятся??? По указанному в config.php пути ничего нет...


Опубликовано andypost@drupal.org в вт, 29/07/2008 - 16:41.

Удивительно, что файлов нет. Настройки при установке прописываются в settings.php - и нигде иначе!


Опубликовано Valeratal в пн, 18/08/2008 - 05:24.

Спасибо, полезно


Опубликовано kiev1 в чт, 11/12/2008 - 13:12.

зачем кеш выносить в память? ее и так не хватает, тем более если на сайте много страниц - то вероятность того что запросят ту что еще не устарела - близка к нулю, кеширование это проблема капитальная и ее еще не решили нормально


Опубликовано andypost@drupal.org в чт, 11/12/2008 - 23:05.

@kiev1 странный вопрос, память самый быстрый и дешевый носитель. Если её не хватает, что мешает её просто добавить?


Опубликовано kiev1 в пт, 12/12/2008 - 08:07.

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


Опубликовано Dimm в пт, 16/01/2009 - 19:15.

Спасибо огромное. Буду пробовать.


Опубликовано slavik.kz в пн, 16/02/2009 - 18:15.

блин, не могу установить модуль, скопировал, в админке включил, setting.php дополнил, все равно в меню не появился, может я не там ищу?


Опубликовано Screenager в пн, 16/02/2009 - 21:45.

подскажите все таки как сделать распределенное кэширование?
в настройках указывается только 'engine' => 'memcache', а для каких таблиц не понятно, как сделать связку eacc и memcache?,
еще вопрос как выбрать eaccelerator кэширование, при установке таких значений 'engine' => 'eacc' сайт вообще не грузится, хотя eaccelerator установлен.


Опубликовано andypost@drupal.org в вт, 17/02/2009 - 04:57.

slavik.kz написал(а):

блин, не могу установить модуль, скопировал, в админке включил, setting.php дополнил, все равно в меню не появился, может я не там ищу?

а какое меню нужно? admin/settings/cacherouter в новых версиях

Screenager написал(а):

подскажите все таки как сделать распределенное кэширование?
в настройках указывается только 'engine' => 'memcache', а для каких таблиц не понятно, как сделать связку eacc и memcache?,
еще вопрос как выбрать eaccelerator кэширование, при установке таких значений 'engine' => 'eacc' сайт вообще не грузится, хотя eaccelerator установлен.

на сегодня можно брать оф-версию, а вот memcache обязательно указывать параметр shared, если все кладется в один инстанс - то есть несколько таблиц будут лежать в одном memcache-сервере.

В eacc лучше сласть таблицы cache cache_block cache_update cache_views, в memcache страницы - cache_page, а остальное default в базу


Опубликовано Screenager в вт, 17/02/2009 - 10:05.

andypost@drupal.org написал(а):

а какое меню нужно? admin/settings/cacherouter в новых версиях

у меня по этом адресу ни чего не выходит, так же меню не появляется (последняя версия cacheroute из csv)

andypost@drupal.org написал(а):

на сегодня можно брать оф-версию, а вот memcache обязательно указывать параметр shared, если все кладется в один инстанс - то есть несколько таблиц будут лежать в одном memcache-сервере.
В eacc лучше сласть таблицы cache cache_block cache_update cache_views, в memcache страницы - cache_page, а остальное default в базу

извени что спрашиваю опять :) не понимаю все же как именно настроить, напиши пожалуйста на примере, что нужно писать в settings.php для распределенного кэширования?


Опубликовано slavik.kz в сб, 21/02/2009 - 16:42.

Действительно, информации по настройке очень мало, даже на английском (или я плохо юзаю гугл)
Но в целом настраивать так:

$conf['cacherouter'] = array(
  'default' => array(
    'engine' => 'file',
    'server' => array(),
    'shared' => TRUE,
    'prefix' => '',
    'path' => './sites/default/files/filecache',
    'static' => FALSE,
    'fast_cache' => TRUE,
  ),
'cache_filter' => array(
'engine' => 'db') // cache_filter - слать в базу
);

я понял так, хотелось бы от знающих людей увидеть небольшой ман по настройке, что по-чём, типичные настройки, что в БД, что в файлы, что в eacc, что в мемкешед

p.s. cache_filter почему-то упорно не хотел писаться в файл

p.p.s. не хватает знаний, все-таки eacc быстрее хранения в файлах? т.к. не компилируется или все-таки какие-то нюансы?


Опубликовано andypost@drupal.org в вс, 22/03/2009 - 16:37.

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

http://drupal.org/node/381000#comment-1355332


Опубликовано Dimm в пн, 21/02/2011 - 16:12.

Здравствуйте.
Вошли ли Ваши изменения в ядро модуля?


Опубликовано andypost@drupal.org в пт, 25/02/2011 - 09:23.

Данный топик можно смело закрывать - все измения уже в модуле и поддержка ведется через официальные issues


Новое на сайте

Ссылки партнёров