Настройка memcached через unix-сокеты в BitrixVM
Практически все проекты на Битриксе (и сайты и корпоративные порталы) рекомендуется устанавливать на VPS или выделенные серверы и обязательно в веб-окружение BitrixVM.
Как пишут сами Битриксы на своём сайте, BitrixVM специально сконфигурирована для быстрого исполнения программных продуктов «1С-Битрикс»: разворачивается за минуты и сразу же готова к работе.
Однако по-умолчанию в виртуальной машине и в самом Битриксе установлена настройка кэширования данных в файловой системе. В современных реалиях с SSD-дисками (особенно NVMe) файловый кэш будет работать достаточно быстро, но всё же гораздо медленнее, чем из оперативной памяти.
Другая проблема заключается в том, что при неправильно настроенном кэшировании вы можете файлами кэша забить всю файловую систему: дальше у вас либо кончится место на диске, либо свободные inodes файловой системы. После этого ваш сайт перестанет открываться с ошибкой MySQL «Got error 122 from storage engine» (об этом мы расскажем в другой статье).
Чтобы настроить хранение кэша в оперативной памяти сервера, в виртуальной машине предусмотрена возможность установить memcached и подключить именно его в качестве хранителя кэша для Битрикса. Чтобы установить и настроить memcached на наилучшую производительность, необходимо:
Устанавливаем memcached
Установить его проще всего через панель инструментов, которая поставляется вместе с виртуальной машиной:
По-умолчанию memcached устанавливается на локальную машину и даёт возможность подключаться через TCP-сокеты (через 11211 порт по-умолчанию). Это не самый производительный способ, поэтому лучше memcached перевести на работу через unix-сокет.
Настройка работы через unix socket
Настройки демона memcached в CentOS 7.5 находятся в файле /etc/sysconfig/memcached. Его содержимое по-умолчанию выглядит следующим образом:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
Необходимо изменить параметры на следующие:
PORT="0"
USER="bitrix"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-s /tmp/memcached.sock -a 0600"
Поясним каждое изменение:
PORT="0" позволяет отключить прослушивание TCP-сокета.
USER="bitrix" задаёт владельца сокет-файла, который мы собираемся создать. Никто, кроме владельца, не сможет читать и писать что-либо в сокет.
CACHESIZE="64" мы оставили как есть, однако в этом параметре вы можете указать количество памяти (в мегабайтах), которое хотите выделить для кэша.
OPTIONS — это основные настройки создания сокет-файла, их две:
-s /tmp/memcached.sock задаёт путь и имя будущего файла сокета
-a 0600 определяет права доступа к файлу
После внесения изменений необходимо перезапустить memcached командой:
systemctl restart memcached
Последнее, что нужно сделать, чтобы Битрикс стал писать кэш в memcached, а не в файлы — это внести изменения в файл /bitrix/.settings.php, добавив туда ключ:
'cache' => array(
'value' => array (
'type' => 'memcache',
'memcache' => array(
'host' => 'unix:///tmp/memcached.sock',
'port' => 0
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
Убедиться, что всё настроено верно, можно в панели управления Битрикса: Настройки → Производительность → Панель производительности.
На вкладке «Битрикс» в графе «Хранение кэша» должно стоять значение «memcache»:
партнёр
Битрикса
на рынке
в течение
30 минут
человек
в штате
Золотой
партнёр
Битрикса
9 лет
на рынке
Реагируем
в течение
30 минут