Дата последнего изменения: 24.09.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 6:
service memcached restart
CentOS 7:
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 6:
service memcached restart
CentOS 7:
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" ), ), ); ?>