Эффективное использование 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?

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

KM.
источник
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 МБ, так что для нас это не имело большого значения.

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