Настройка Memcached для 1С-Битрикс: кэширование, сессии, композит

Сайт на 1С-Битрикс с 20 000 товаров начинает тормозить при фильтрации каталога — страницы генерируются 5–7 секунд, база данных задыхается от запросов. Первое, что мы делаем в таких проектах, — заменяем файловый кэш на Memcached. Это даёт прирост скорости в 5–10 раз на страницах каталога и снижает на
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка Memcached для 1С-Битрикс: кэширование, сессии, композит
Простой
~1 день

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    880
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

Сайт на 1С-Битрикс с 20 000 товаров начинает тормозить при фильтрации каталога — страницы генерируются 5–7 секунд, база данных задыхается от запросов. Первое, что мы делаем в таких проектах, — заменяем файловый кэш на Memcached. Это даёт прирост скорости в 5–10 раз на страницах каталога и снижает нагрузку на БД до 90%. В этом материале — как настроить Memcached правильно, чтобы избежать проблем с инвалидацией и вытеснением данных.

Почему Memcached критичен для высоконагруженных сайтов?

Битрикс имеет встроенную поддержку Memcached через модуль кэширования. При правильной настройке кэш компонентов, HTML-страниц (композитный сайт) и сессии хранятся в памяти, минуя файловую систему. На сервере с HDD разница между файловым кэшем и Memcached — 5–10× по времени чтения. Memcached использует consistent hashing для распределения ключей по нодам — это гарантирует минимальное перераспределение при добавлении или удалении сервера.

Типичные боли, которые решает Memcached

  • Медленная загрузка страниц каталога из-за чтения кэша с диска
  • Рост нагрузки на базу при пиковых посещениях (до 5000 rps)
  • Потеря кэша после перезагрузки веб-сервера (файловый кэш не сохраняется)
  • Неэффективное использование памяти: файловый кэш занимает дисковое пространство, а не RAM

Как мы настраиваем Memcached под ключ

Наши инженеры имеют 10+ лет опыта работы с Битрикс и выполнили более 100 проектов по оптимизации кэширования. В работе используем только актуальные версии: PHP 8.1+, Memcached 1.6+, php-memcached extension. Гарантируем стабильность и прирост производительности.

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

  1. Аналитика — замер текущей производительности, выявление узких мест (до 2 часов)
  2. Проектирование — расчёт объёма памяти, количества соединений, параметров ядра
  3. Установка и конфигурация — настройка Memcached, подключение в Битрикс через .settings.php
  4. Тестирование — проверка hit rate, инвалидации, совместимости с композитным режимом
  5. Оптимизация — настройка TTL, тегированного кэширования, мониторинг evictions
  6. Документация — передача конфигов и инструкций по обслуживанию

Сроки: от 1 до 3 рабочих дней в зависимости от архитектуры проекта. Стоимость настройки — от $220–320, окупаемость — 2–3 месяца за счёт снижения нагрузки на сервер.

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

  • Конфигурационные файлы Memcached с оптимальными параметрами
  • Настройка подключения к Битрикс (файл .settings.php, php.ini для сессий)
  • Включение тегированного кэширования и настройка cache_flags.php
  • Мониторинг: скрипты для сбора статистики (hit rate, evictions)
  • Документация: описание конфигурации и инструкция по обслуживанию
  • Обучение: консультация по управлению кэшем для вашего администратора
  • Поддержка: 2 недели после настройки для решения возможных проблем

Как избежать вытеснения?

Вытеснение (evictions) — это когда Memcached удаляет старые данные, чтобы освободить место под новые. Если evictions постоянно растут, значит выделенной памяти не хватает. В Битрикс это часто случается при кэшировании больших HTML-блоков каталога. Решение — увеличить параметр -m в конфигурации. На практике для проекта с 10 000 товаров и 500 посетителями в сутки достаточно 2 ГБ памяти.

Пример конфигурации для среднего проекта ```bash # /etc/memcached.conf -m 2048 # 2 ГБ -I 32m # макс. размер объекта 32 МБ -t 4 # 4 потока (по числу ядер) ``` Этого достаточно для 95% проектов. Если хитов больше 1 млн/сутки, увеличивайте до 4 ГБ.

Как подключить Memcached к Битрикс?

Установка и базовая настройка:

apt install memcached php-memcached # Конфигурация /etc/memcached.conf -d # daemon mode -m 1024 # память в МБ -u memcache -l 127.0.0.1 # только localhost -p 11211 -c 1024 # max connections -I 32m # max item size (для крупных объектов кэша) -t 4 # потоки (= количество ядер) 

Параметр -I 32m критичен: дефолтный лимит 1 МБ, а страница каталога с 50 товарами в HTML может весить 2–5 МБ. Без увеличения кэш молча не сохраняет крупные объекты.

Подключение в Битрикс:

<?php // /bitrix/.settings.php return [ 'cache' => [ 'value' => [ 'type' => 'memcache', 'memcache' => [ 'host' => '127.0.0.1', 'port' => '11211', ], 'sid' => 'bitrix_cache', ], ], ]; ?> ; php.ini для кэша сессий session.save_handler = memcached session.save_path = "127.0.0.1:11211" 

Либо через админку: Настройки → Настройки продукта → Кэширование — выбрать «Memcache».

Как проверить эффективность кэша?

# Базовая статистика echo "stats" | nc 127.0.0.1 11211 | grep -E "curr_items|bytes|get_hits|get_misses|evictions" # Подсчёт hit rate hits=$(echo "stats" | nc 127.0.0.1 11211 | grep get_hits | awk '{print $3}') misses=$(echo "stats" | nc 127.0.0.1 11211 | grep get_misses | awk '{print $3}') echo "Hit rate: $(echo "scale=2; $hits / ($hits + $misses) * 100" | bc)%" 

Hit rate — ключевая метрика. Если ниже 80%, кэш неэффективен: либо слишком короткий TTL, либо объекты вытесняются раньше времени. Мониторинг evictions обязателен: если они растут — увеличивайте -m.

Сравнение Memcached и Redis для Битрикс

Критерий Memcached Redis
Производительность Быстрее на простых get/set Сопоставимо
Персистентность Нет (данные теряются при рестарте) Есть (RDB/AOF)
Структуры данных Только строки Строки, списки, хэши, сеты
Кластеризация Нет нативного кластера Redis Cluster
Поддержка Битрикс Нативная Через модуль или кастомный класс

Для кэша компонентов и HTML — Memcached достаточен. Для очередей задач, счётчиков, pub/sub — Redis.

Таблица типичных ошибок при настройке

Ошибка Последствие Решение
Маленький -I (1 МБ) Крупные HTML-блоки не кэшируются Установить -I 32m
Не хватает памяти (-m) Постоянные evictions, низкий hit rate Увеличить -m до 2–4 ГБ
Отсутствие тегированного кэша Инвалидация не работает, старый кэш Включить теги в cache_flags.php
Неправильный sid Конфликт ключей на нескольких сайтах Уникальный sid для каждого сайта

Типичная проблема: устаревший кэш после обновлений

Битрикс инвалидирует кэш по тегам. При обновлении товара инвалидируются все кэши, содержащие тег этого товара. Если инвалидация не работает — проверяем, что тег-система правильно настроена в cache_flags.php:

<?php // bitrix/php_interface/cache_flags.php $GLOBALS['CACHE_FLAGS'] = [ 'iblock_id_list' => true, 'catalog_price' => true, ]; ?> 

Также важно, чтобы в настройках компонентов не был отключён тегированный кэш. После настройки вы снижаете затраты на серверное оборудование и ускоряете окупаемость проекта.

Дополнительные материалы

Подробнее о Memcached читайте в Wikipedia. По настройке Битрикс — документация 1С-Битрикс.

Свяжитесь с нами для бесплатной консультации и анализа вашего проекта. Закажите настройку Memcached под ключ и получите прирост скорости за 1–3 дня.