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

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

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

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

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

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

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995

Настройка 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 дня дополнительно.

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