Локальный кеш в кластере

Урок 383 из 750
Автор: Роберт Басыров
Сложность урока:
5 уровень - сложно, но не смертельно. Нужно подумать, вспоминать уже пройденный материал, собрать в кучу внимание, немного терпения и всё получится.
5 из 5
Просмотров: 34245
Дата изменения: 10.04.2023
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес, Бизнес

Ускоряем работу с кешем

Внимание! Ниже описаны действия, которые можно отнести к экстремальному тюнингу. Действия требуют от системного администратора довольно высокого уровня компетенции, нужно чётко понимать смысл выполняемых действий.

Использование подключения через unix soket к локальным memcache серверам, ускоряет работу проекта. Ядро обеспечивает валидность кеша на всех нодах, удаляя помеченные ключи кеша на них. Такой режим работы кластера очень хорошо себя зарекомендовал в различных нагрузочных тестах и реальной эксплуатации, обеспечивая прирост порядка 30% за счет более быстрой работы с кешем.

Настройка режима работы с локальным кешем

Предположим, есть две ноды на которых настроены роли веб сервера, мемкеша и БД. В этом случае необходимо выполнить следующие шаги:

  1. Настроить memcache на использование веб сокета и модуль Веб-кластер на работу с мемкешем через сокет.
    • Для настройки memcache на работу с сокетом выполните команду:
      cat /etc/sysconfig/memcached 
      # Ansible managed: /etc/ansible/roles/memcached/templates/sysconfig-memcached.j2 modified on 2015-01-30 19:00:16 by root on bx24.perf
      # memcached settings
      PORT="11211"
      USER="memcached"
      MAXCONN="4096"
      CACHESIZE="512"
      OPTIONS="-t 8 -s /tmp/memcached.sock -a 0777"
    • Для настройки модуля Веб-кластер на работу с мемкешем через сокет указать В случае, если в проекте планируется использовать memcached, необходимо произвести его настройку в соответствии с предполагаемой нагрузкой.

      Подробнее ...
      порт 0 и урл unix:///tmp/memcached.sock
  2. В модуле кластера добавить нужное количество групп Группы - сущность созданная только для удобства работы. Они используются для объединения "узлов" в рамках гео-кластера. Это позволяет расположить в различных географически расположенных дата-центрах собственные: Cервера баз данных, Memcached-сервера, Веб-сервера.

    Подробнее ...
    .
  3. На каждом сервере определить константы указывающие ID группы, а также включающий режим чтения слэйвов из любой группы.
    <?
    define('BX_CLUSTER_GROUP', 1);
    define('BX_CLUSTER_SLAVE_USE_ANY_GROUP', true);
    ?>
  4. Перенести слэйв сервера в административную часть БУС, по нужным группам. Для переноса слэйв серверов в нужную группу необходимо, отредактировать соответствующие записи в таблице b_cluster_dbnode, установив нужное значение в поле GROUP_ID.
  5. Для переноса серверов memcached в нужную группу, необходимо установить нужное значение ключа GROUP_ID в файле /bitrix/modules/cluster/memcache.php.

После этого сервера начнут работать с локальным кешем через сокет, что значительно быстрее чем работа с удаленными серверами по tcp.


Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»