Налаштування memcached для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування memcached для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування Memcached для 1С-Бітрікс

Налаштування Memcached для 1С-Бітрікс

1С-Бітрікс має вбудовану підтримку Memcached через модуль кешування. При правильному налаштуванні кеш компонентів, HTML-сторінок (композитний сайт) і сесії зберігаються в пам'яті, минаючи файлову систему. На сервері з повільними дисками (HDD) різниця між файловим кешем і Memcached — 5–10 разів за часом читання.

Встановлення та базове налаштування

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 МБ. 1С-Бітрікс кешує HTML-блоки сторінок цілком; сторінка каталогу з 50 товарами в HTML може важити 2–5 МБ. Без збільшення ліміту кеш мовчки не зберігає великі об'єкти.

Підключення в 1С-Бітрікс

У файлі /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 для 1С-Бітрікс

Критерій Memcached Redis
Продуктивність Швидший для простих get/set Порівнянно
Персистентність Немає (дані губляться при рестарті) Є (RDB/AOF)
Структури даних Лише рядки Рядки, списки, хеші, сети
Кластеризація Немає нативного кластера Redis Cluster
Підтримка Бітрікс Нативна Через модуль або кастомний клас

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

Типова проблема: застарілий кеш після оновлень

1С-Бітрікс інвалідує кеш за тегами. При оновленні товару інвалідуються всі кеші, що містять тег цього товару. Якщо інвалідація не працює — перевіряємо, що тег-система правильно налаштована в cache_flags.php:

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