Настройка memcached для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка memcached для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Memcached для 1С-Битрикс

Настройка Memcached для 1С-Битрикс

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

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

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 МБ. Битрикс кэширует HTML-блоки страниц целиком; страница каталога с 50 товарами в HTML может весить 2–5 МБ. Без увеличения лимита кэш молча не сохраняет крупные объекты.

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

В файле /bitrix/.settings.php (не dbconn.php):

return [
    'cache' => [
        'value' => [
            'type' => 'memcache',
            'memcache' => [
                'host' => '127.0.0.1',
                'port' => '11211',
            ],
            'sid' => 'bitrix_cache',
        ],
    ],
];

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

Кэш сессий в php.ini:

session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

Несколько серверов Memcached

При нескольких нодах приложения сессии должны храниться в общем Memcached:

// .settings.php с пулом серверов
'memcache' => [
    [
        'host' => '10.0.0.10',
        'port' => '11211',
        'weight' => 1,
    ],
    [
        'host' => '10.0.0.11',
        'port' => '11211',
        'weight' => 1,
    ],
],

Memcached использует consistent hashing для распределения ключей по нодам — при добавлении/удалении ноды перераспределяется только часть ключей.

Мониторинг и диагностика

# Базовая статистика
echo "stats" | nc 127.0.0.1 11211

# Ключевые метрики
echo "stats" | nc 127.0.0.1 11211 | grep -E "curr_items|bytes|get_hits|get_misses|evictions"

evictions > 0 — Memcached вытесняет старые данные чтобы освободить место под новые. evictions растут — увеличивайте -m или анализируйте, что занимает память.

Hit rate = get_hits / (get_hits + get_misses). Ниже 80% — кэш неэффективен: TTL слишком короткий или объекты вытесняются раньше времени.

# Подсчёт 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)%"

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

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

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

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

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

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