Дата последнего изменения: 18.11.2024
Если некорректно настроен Memcached (доступен снаружи), то этим могут воспользоваться злоумышленники для взлома сайта.
Необходимо проверить опцию -l <ip> в его настройках. Обращение к Memcached должно быть разрешено только c вашего сайта.
В случае, если в проекте планируется использовать memcached, необходимо произвести его настройку в соответствии с предполагаемой нагрузкой.
Для этого необходимо:
/etc/sysconfig/memcached задать следующие параметры:
MAXCONN = "1024" - количество одновременных подключений (по умолчанию 1024);CACHESIZE="1024" - объем выделяемой памяти для кеша (по умолчанию 64MB);OPTIONS="-t 8" - количество потоков memcached (по умолчанию 4).MAXCONN, CACHESIZE и OPTIONS подбираются экспериментальным путем в зависимости от характера нагрузки и от имеющихся ресурсов.
Оценить объем памяти, необходимой для кеширования (параметр CACHESIZE), можно по размеру вашего файлового кеша. Если у вас на проекте файловый кеш занимает 3 GB, то использование memcached c 256МБ памяти не будет эффективным за счет частого вытеснения.
CentOS Stream 9:
systemctl restart memcached.service
/bitrix/php_interface/dbconn.php:
define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");
И в файле /bitrix/.settings_extra.php (если его нет, то создать):
<?php
return array(
'cache' => array(
'value' => array(
'type' => 'memcache',
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211',
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
);
?>
В случае, если используется один сервер, то для улучшения производительности можно настроить работу с memcached через сокет:
В файле /etc/sysconfig/memcached задать параметры:
USER="bitrix" - пользователь, от которого будет запущен memcached; OPTIONS="-t 8 -s /tmp/memcached.sock" - количество потоков и путь к сокету.CentOS Stream 9:
systemctl restart memcached.service
/bitrix/php_interface/dbconn.php:
define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "unix:///tmp/memcached.sock");
define("BX_MEMCACHE_PORT", "0");
И в файле /bitrix/.settings_extra.php (если его нет, то создать):
<?php
return array(
'cache' => array(
'value' => array(
'type' => 'memcache',
'memcache' => array(
'host' => 'unix:///tmp/memcached.sock',
'port' => '0',
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
);
?>
Особенности при многосайтовости
Если используется многосайтовость, то в примере указывается статичный
sid
Идентификатор сайта, поле ID в параметрах настроек сайта
, без $_SERVER["DOCUMENT_ROOT"]. Например, для двух сайтов при многосайтовости на одном ядре, кеш будет отличаться, так как папки у сайтов разные.
<?php
return array(
'cache' => array(
'value' => array(
'type' => 'memcache',
'memcache' => array(
'host' => 'unix:///tmp/memcached.sock',
'port' => '0',
),
'sid' => "#01"
),
),
);
?>