Сайт на 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. Гарантируем стабильность и прирост производительности.
Процесс работы
- Аналитика — замер текущей производительности, выявление узких мест (до 2 часов)
- Проектирование — расчёт объёма памяти, количества соединений, параметров ядра
- Установка и конфигурация — настройка Memcached, подключение в Битрикс через .settings.php
- Тестирование — проверка hit rate, инвалидации, совместимости с композитным режимом
- Оптимизация — настройка TTL, тегированного кэширования, мониторинг evictions
- Документация — передача конфигов и инструкций по обслуживанию
Сроки: от 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 дня.







