Телеграм: @bazarow_ru mihail@bazarow.ru Проверяю почту и телеграм 2-3 раза в день.
С 1 по 10 января 2024 будет сделан редизайн сайта.
Пришла пора освежиться!

Настройка: Redis кеширование для 1С-Битрикс, под Ubuntu 20.04

Просмотров: 547

Задача: имеем полностью настроенный и оптимально сконфигурированный веб-сервер под управлением Ubuntu 20.04 на котором запущен интернет магазин c 1С-Битрикс. Нужно настроить хранение кеша в Redis хранилище (инструкция совместима и с Debian).

кеширования в Redis для 1С-Битрикс
Redis— это высокопроизводительное хранилище значений ключей в памяти, известное своей гибкостью, производительностью и широкой языковой поддержкой.

Установка и конфигурирование Redis на Ubuntu 20.04.

Для начала установим Redis командой:

sudo apt install redis-server -y

Это позволит загрузить и установить Redis и его зависимости. После этого необходимо внести одно важное изменение в файл конфигурации. Открываем файл конфигурации redis.conf:

sudo nano /etc/redis/redis.conf

Находим строку supervised no и меняем на supervised systemd. Эта директива позволяет использовать систему инициализации systemd для управления Redis как службой, на Ubuntu

Далее необходимо внести еще ряд изменений в конфигурационный файл.

По умолчанию Redis использует всю доступную память на сервере. Рекомендуется настроить его так, чтобы он занимал около 60-70% оперативной памяти. Это можно сделать, отредактировав строчку в redis.conf следующим образом:


maxmemory 1024mb #Выделено 1Gb
maxmemory-policy volatile-ttl #удалять старый кеш если не помещается

Redis будет открывать новое соединение для каждого запроса. Чтобы избежать замедления работы из-за открытия нового соединения для каждого запроса, необходимо включить keepalive. Для этого измените строку в redis.conf на:

tcp-keepalive 0

Redis также пытается сохранить данные на диск, что может замедлить работу. Рекомендуется закомментировать строки, начинающиеся с save.

#save 900 1
#save 300 10
#save 60 10000

Некоторые параметры, такие как tcp-backlog и maxclients, могут потребоваться отредактировать под конкретные требования проекта и ожидаемую нагрузку:

tcp-backlog 511 #можно увеличить до 65536
maxclients 10000 #максимальное число соединений

В новых версиях redis собственное значение tcp-backlog установлено на 511, и вам потребуется увеличить его, если у вас много соединений.

maxclients - как только лимит будет достигнут, Redis закроет все новые соединения, отправляя. ошибку "достигнуто максимальное количество клиентов".

После внесения всех изменений перезапускаем сервис Redis командой

sudo systemctl restart redis.service

Настройка кеширования в Redis на стороне 1С-Битрикс

На стороне 1С-Битрикс все просто: в директории /bitrix/ открываем файл .settings_extra.php (если его нет создаем) и заменяем все содержимое на:

return array(
    'cache' => array(
        'value' => array(
            'type' => array(
                'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis',
                'extension' => 'redis'
            ),
            'redis' => array(
                'host' => '127.0.0.1',
                'port' => '6379',
            ),
            'sid' => $_SERVER["DOCUMENT_ROOT"] . "#ho"
        ),
    ),
);

Обязательно укажите уникальное значение в качестве sid, например, первые две буквы домена, чтобы избежать перемешивания кешей разных сайтов в Redis.

Убедитесь, что кеширование в Redis успешно настроено, зайдя в админпанель, раздел "Настройки -> Производительность -> Панель производительности". Там должен быть указан текущий способ кеширования, используемый на сайте (скрин в начале статьи).

Видеоинструкция по установке и настройке Redis с 1С-Битрикс

Видеоинструкция входит в одну из серий моего видеокурса по созданию проекта на 1С-Битрикс.
Перейти к серии.

Михаил Базаров 22.09.2023
Оптимальные настройки Redis могут сильно зависеть от конкретного применения, а также от характеристик сервера и ожидаемой нагрузки. Вот базовые настройки, которые можно использовать в большинстве случаев:

Максимальный объем памяти:
Код
maxmemory 2GB

Это значение устанавливает максимальный объем памяти, который Redis может использовать для хранения данных. Здесь установлено 2 гигабайта.
Политика вытеснения:
Код
maxmemory-policy volatile-ttl

Эта политика указывает Redis, какой ключ вытеснить, если достигнут максимальный объем памяти. В данном случае, Redis будет вытеснять ключи с истекшим временем жизни (TTL) с наименьшей частотой использования.
Количество соединений:
Код
maxclients 10000

Этот параметр устанавливает максимальное количество одновременных клиентских соединений. Установите его в соответствии с ожидаемой нагрузкой.
Очередь ожидающих соединений:
Код
tcp-backlog 511

Этот параметр указывает максимальное количество ожидающих соединений. Вам может потребоваться увеличить его, если у вас много соединений.
Отключение сохранения на диск:
Код
save ""

Если вам не требуется сохранение данных на диск, лучше отключить эту опцию.
Отключение журналирования в диск:
Код
appendonly no

Если вы не используете журналирование в диск (append-only file), то его можно отключить.

Эти параметры представляют собой базовые рекомендации и могут потребоваться корректировки в зависимости от конкретного сценария использования Redis. Важно также регулярно мониторить производительность и адаптировать настройки под реальные условия и нагрузку.