Настройка Redis для сессий Magento 2: полное руководство

Когда ваш магазин на Magento 2 начинает тормозить из-за роста нагрузки, первым страдают сессии пользователей — корзины очищаются, админка зависает. Мы настраиваем Redis для хранения сессий, разделяя кэш и данные о покупателях, чтобы исключить потери и ускорить работу. Наша команда реализует проект под ключ — от аудита до внедрения и последующей поддержки, обеспечивая стабильность даже в пиковые моменты.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка Redis для сессий Magento 2: полное руководство
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Настройка Redis для сессий Magento 2

При росте нагрузки на интернет-магазин на Magento 2 первое, что начинает тормозить — сессии пользователей. Файловое хранение сессий создаёт inode-давление на файловую систему и блокировки при параллельных AJAX-запросах. Мы, инженеры с опытом внедрения Redis в высоконагруженные проекты, сталкивались с этой проблемой десятки раз. Однажды клиент пришёл с ситуацией: корзины покупателей периодически очищались, а админка зависала на 30 секунд при пиковых нагрузках. Решение — перевести сессии на отдельный Redis-инстанс с правильной конфигурацией.

Magento 2 поддерживает два независимых Redis-подключения: одно для кэша приложения (блоки, конфигурация, FPC), другое для сессий пользователей. Разделение на разные базы Redis — обязательная практика, иначе операция FLUSHDB при очистке кэша удаляет активные сессии всех покупателей. В нашем проекте мы использовали два инстанса: один с политикой allkeys-lru для кэша, второй с noeviction для сессий — это полностью исключило потерю данных и сэкономило ресурсы сервера.

Проблемы, которые решает Redis для сессий Magento 2

По умолчанию Magento хранит сессии в файловой системе (var/session/). При росте трафика это создаёт проблемы:

  • Тысячи мелких файлов на одной FS создают inode-давление.
  • Файловые блокировки при параллельных AJAX-запросах от одного пользователя.
  • На кластере несколько нод не видят сессии друг друга.

Официальная документация Magento рекомендует Redis для сессий начиная с версии 2.2, особенно для мультисайтовых установок. Redis решает все три проблемы: атомарные операции без блокировок, централизованное хранение, работает с Redis Sentinel/Cluster для HA.

Сравнение файлового хранения и Redis для сессий:

Критерий Файловые сессии Redis сессии
Скорость записи 1-5 мс (с блокировками) <0.1 мс (без блокировок)
Inode-давление Высокое (тысячи файлов) Нет (всё в памяти)
Кластеризация Не поддерживается Sentinel/Cluster
Устойчивость к сбоям Низкая AOF + репликация
Блокировки Да (file locking) Нет (атомарные операции)

Как настроить два независимых Redis-инстанса для сессий и кэша?

Настройка в env.php требует два блока: для кэша и для сессий. Полная конфигурация:

Пример конфигурации env.php
'session' => [
    'save' => 'redis',
    'redis' => [
        'host' => '127.0.0.1',
        'port' => '6379',
        'password' => 'strongpassword',
        'timeout' => '2.5',
        'persistent_identifier' => '',
        'database' => '2', // отдельная БД от кэша
        'compression_threshold' => '2048',
        'compression_lib' => 'gzip',
        'log_level' => '1',
        'max_concurrency' => '6',
        'break_after_frontend' => '5',
        'break_after_adminhtml' => '30',
        'first_lifetime' => '600',
        'bot_first_lifetime' => '60',
        'bot_lifetime' => '7200',
        'disable_locking' => '0',
        'min_lifetime' => '60',
        'max_lifetime' => '29500',
        'sentinel_master' => '',
        'sentinel_servers' => '',
        'sentinel_connect_retries'=> '5',
        'sentinel_verify_master' => '0',
    ],
],
'cache' => [
    'frontend' => [
        'default' => [
            'backend' => 'Cm_Cache_Backend_Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'database' => '0', // БД 0 для кэша
                'password' => 'strongpassword',
                'compress_data' => '1',
                'compress_tags' => '1',
                'compression_lib' => 'gzip',
                'read_timeout' => '1.5',
            ],
        ],
        'page_cache' => [
            'backend' => 'Cm_Cache_Backend_Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'database' => '1', // БД 1 для FPC
                'password' => 'strongpassword',
                'compress_data' => '0', // FPC не сжимаем: больше памяти, быстрее
            ],
        ],
    ],
],

Итого три базы Redis: 0 — кэш, 1 — FPC, 2 — сессии.

Настройка Redis под нагрузку Magento

/etc/redis/redis.conf (параметры, специфичные для Magento):

maxmemory 2gb
maxmemory-policy allkeys-lru
# Сессии не должны вытесняться → выделяем отдельный инстанс
# Лучше запускать два redis: :6379 для кэша, :6380 для сессий
save ""
# Для кэша persistence не нужна
appendonly no
tcp-keepalive 60
timeout 300

Для сессий на отдельном порту /etc/redis/redis-sessions.conf:

port 6380
maxmemory 512mb
maxmemory-policy noeviction # сессии нельзя вытеснять
appendonly yes # persistence для сессий
appendfsync everysec

Тогда в env.php для сессий меняем порт на 6380 и database на 0.

Параметры, влияющие на производительность сессий

Таблица ключевых параметров:

Параметр Рекомендация Влияние
max_concurrency 6-15 Чем выше, тем больше параллельных запросов к одной сессии
break_after_frontend 5-10 Задержка перед разрывом соединения при ошибке
compression_threshold 2048 Порог (в байтах) для сжатия данных сессии
disable_locking 0 или 1 0 — блокировка для защиты от race condition, 1 — быстрее, но риск

Как проверить корректную работу сессий после настройки?

# Убедиться что сессии пишутся в Redis
redis-cli -p 6380 KEYS "sess_*" | wc -l
# Посмотреть содержимое сессии
redis-cli -p 6380 GET "sess_abc123xyz"
# Мониторинг в реальном времени
redis-cli -p 6379 MONITOR | grep -i "sess\|cache"
# Hit rate кэша
redis-cli -p 6379 INFO stats | grep -E "keyspace_hits|keyspace_misses"

Hit rate кэша должен быть выше 80%. Если ниже — параметры max_lifetime или maxmemory недостаточны: LRU вытесняет свежие записи. Для сессий используйте отдельный инстанс с noeviction, чтобы избежать потери данных при нехватке памяти.

Что входит в работу?

Мы предлагаем комплексную настройку Redis для Magento 2:

  • Аудит текущей конфигурации сессий и кэша.
  • Установка и настройка двух независимых Redis-инстансов с учётом ваших нагрузок.
  • Оптимизация параметров env.php под конкретный магазин.
  • Тестирование сессий и кэша (hit rate, время отклика).
  • Документация по мониторингу и резервному копированию.
  • Обучение команды (как смотреть логи, собирать метрики).

Мы гарантируем стабильную работу сессий и кэша после настройки. Более 50 проектов на Magento 2 успешно работают на нашей конфигурации. Закажите аудит вашей системы — мы оценим нагрузку и подготовим предложение.

Процесс работы

  1. Аналитика — изучаем логи nginx, нагрузку на сервер, текущую конфигурацию сессий.
  2. Проектирование — выбираем архитектуру (один инстанс с разными БД или два инстанса).
  3. Реализация — настраиваем Redis и env.php, применяем изменения.
  4. Тестирование — проверяем авторизацию, корзину, админку под нагрузкой.
  5. Деплой — применяем на продакшн, мониторим в течение 48 часов.

Сроки работ

Настройка двух Redis-инстансов, конфигурация env.php, тестирование сессий и кэша: 1 день. Настройка Redis Sentinel для HA (если требуется): 1–2 дня дополнительно.

Если вы столкнулись с тормозами в админке или потерей корзин — свяжитесь с нами. Оценим вашу нагрузку за один день и предложим конфигурацию. Получите консультацию инженера уже сегодня.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060