Эффективное использование Memcache с Drupal 7 Multisite


12

Я устанавливаю коэффициент совпадения 55% для нашего экземпляра memcache (v1.4.4) и мне интересно, что можно сделать, чтобы улучшить коэффициент совпадений. Мы находимся в многосайтовой конфигурации (более 30 сайтов) с двумя веб-серверами с балансировкой нагрузки; на каждом веб-сервере есть экземпляр memcached.

У settings.phpменя есть:

$conf['memcache_servers'] = array(
         '11.22.33.44:11211' => 'default',
         '11.22.33.45:11211' => 'default',
      );
$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Я смотрю на использование бинов для улучшения коэффициента попадания, но натолкнулся на некоторые предположения, что последний модуль memcache уже делает это, но я не уверен, так как инструкции с модулем содержат указания по настройке бинов.

Если корзины - это путь, как вы определяете, что (таблица?) Должно иметь свою собственную корзину? Вот таблицы кеша, которые у меня есть на моих сайтах:

cache
cache_admin_menu (empty)
cache_block (empty)
cache_bootstrap
cache_field
cache_filter (empty)
cache_form (empty)
cache_image (empty)
cache_media_xml (empty)
cache_menu
cache_page (empty)
cache_path (empty)
cache_token (empty)
cache_update (empty)
cache_views
cache_views_data (empty)
ctools_css_cache (empty)
ctools_object_cache (empty)

В дополнение к корзинам, что еще я могу сделать, чтобы улучшить использование memcached?

Большое спасибо!


30+ сайтов? Не могли бы вы поделиться подробностями об окружении, PHP mem и MySql max_allowed_packet, я также планирую запустить множество дочерних сайтов, уже 4 планируют иметь 10, но не был уверен, сможет ли drupal справиться с этим.
GoodSp33d

@Kantu - я хочу сохранить эту тему о memcached с Drupal. Если вы отправите новый вопрос, я буду рад взвесить ... или проверить подобные обсуждения здесь или на drupal.org.
КМ.

Я просто хотел узнать настройки вашего сервера, так как запуск 30
дочерних

Ответы:


13

После долгих исследований, вот что помогло нашему коэффициенту попадания и использованию memcached:

  • Обновлен memcached до 1.4.10 (последняя версия с улучшениями производительности)
  • Включен двоичный формат и сжатие
  • Использовать по умолчанию для бункеров

Наш memcached conf в settings.php теперь выглядит примерно так:

$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_options'] = array(
  Memcached::OPT_COMPRESSION => TRUE,
  Memcached::OPT_BINARY_PROTOCOL => TRUE,
  );
$conf['memcache_persistent'] = TRUE;
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Самые большие выгоды

Самым большим преимуществом для нас было включение сжатия, хотя в документации указано, что оно увеличивает циклы ЦП. У нас есть 4 ЦП, выделенных нашей ВМ, и мы не заметили разницы. Время для вызовов memcached увеличилось с ~ 1250 мс до ~ 150 мс (получено от NewRelic) для создания фрагмента контента (в нашем случае пользовательская статья).

Коэффициент попадания

Наш коэффициент попадания теперь составляет ~ 70% - намного лучше, чем 55% ранее, но не тихо - 90% +, о которых некоторые сообщали ... квест продолжается (-:

Надеюсь, это поможет кому-то еще. Если вы столкнулись с другими улучшениями или у вас есть исправления / предложения, пожалуйста, оставляйте комментарии или ответы.

Обновление - версия модуля memcahe

Мы перешли с версии 1.0-бета4 на 1.0, и наш коэффициент попадания сейчас составляет 87%. Мне пришлось перезапустить memcached, так как коэффициент попадания не превышал 70%. На данный момент для memcached выделено 64 МБ, так что для нас это не имело большого значения.


1
Я бы установил для префикса ключа что-то жестко закодированное и не зависящее от заданного имени сервера. Например, если кто-то заходит на ваш сайт с или без www. (который вы могли бы перенаправить или что-то, просто пример), вы получите другой префикс ключа для кеша. Однако вам придется изменить файл settings.php для каждого сайта.
Бердир

1
Кроме того, частота попаданий сильно зависит от ваших сайтов. Если у вас есть много явных очисток кэша или если memcache работает с полной загрузкой и регулярно выбрасывает вещи, ваш коэффициент попадания, очевидно, снизится.
Бердир

Спасибо за взвешивание в @Berdir. Я проверял плиты и пока имя сервера в качестве ключа не было проблемой, но я вижу, где это может быть. Выселения низки ~ 170 и в memcached осталось 25% (~ 17МБ) места. Есть ли способ отследить причину 30% ошибок кэша? Кеш очищает или что-то еще ...?
КМ.

Не легко. К тому времени, когда кэш выходит из строя, вы не можете воспроизвести то, что произошло с ним. Что вы можете попробовать, так это очистить кэш журнала, включая обратную трассировку, чтобы увидеть, откуда они поступают, но не уверены, что это поможет
Бердир,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.