Инструкция по настройке кеширования
Использование кеширования в оперативной памяти
В версии 8.5.1 главного модуля появилась поддержка кеширования не только на диск, но и в разделяемую память.
Акселераторы PHP поддерживают API работы с разделяемой памятью. Это значит, что все процессы веб-сервера могут читать и писать в общее адресное пространство. Это позволяет организовать совместно используемый синхронный кеш.
Хотя данные приложения, кешированные в файл, кешируются на уровне файловой системы, бывают ситуации (например: резервное копирование) когда этот кеш вытесняется и становится не эффективным для использования.
Преимуществом разделяемого кеша акселераторов является его нахождение в оперативной памяти. Использование свопинга говорит о неадекватной настройке хостинга. Недостаток своп-файла - его полный сброс при перезапуске веб-сервера.
PHP приложения
Программа | Описание | Версия |
---|---|---|
APC | Использует уже имеющиеся механизмы разделяемой памяти. Предоставляя PHP программисту функции apc_fetch, apc_store и apc_delete.
|
|
eAccelerator | При сборке расширения необходимо указать "--with-eaccelerator-shared-memory". Имеет те же недостатки, что и APC. Достоинство: есть возможность настроить сохранение кеша на диск.
Примечание. eAccelerator не совместим с PHP версий выше 5.3
|
Не поддерживается с версии 15.5.0 |
Демон memcached
Кроме акселераторов, схожим, но гораздо более богатым функционалом обладает демон memcached.
Это отдельный процесс использующий для коммуникаций протокол TCP/IP, который может поддерживать распределенный, разделяемый, синхронный кеш. К серверу, на котором запущен memcached, можно подключить более одного веб-сервера. Использование memcached решает проблемы кеша акселераторов, но на первое место выходит штраф производительности из-за транспорта протокола.
Пример работы с memcached на Ubuntu. Установка:
aptitude install memcached
Настройки демона хорошо документированы и расположены файле /etc/memcached.conf
Запуск демона:
/etc/init.d/memcached start
Для PHP имеется три расширения для работы с сервером memcached. На данный момент "1С-Битрикс: Управление сайтом" поддерживает расширение memcache. При этом при использовании memcache к нему можно подключиться через unixsocket:
define("BX_MEMCACHE_HOST", "unix:///path/to/memcached.sock"); define("BX_MEMCACHE_PORT", "0");
Однако предварительно нужно настроить memcached для работы через сокеты. Для этого необходимо в файле настройки memcached изменить сточку OPTIONS="" на OPTIONS="-s /tmp/memcached.sock -a 00755". И только после этого вносить изменения в dbconn.php.
Настройка Битрикса
Управление кешем реализуется через константы определяемые в файле dbconn.php (В версии ядра выше 14.0 настройки производятся в других файлах).
Константа | Описание |
---|---|
BX_CACHE_TYPE | Самая важная из всех. Может принимать следующие значения:
Пример: define("BX_CACHE_TYPE", "memcache"); |
BX_CACHE_SID | Обязательно определять, если на одном сервере запущено более одного экземпляра "1С-Битрикс: Управление сайтом". Это соль которая будет подмешана ко всем ключам кеша. И позволит им "не перепутаться".
Пример: define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01"); |
BX_MEMCACHE_HOST | Необходима только при использовании memcache. В ней определяется адрес сервера на котором запущен демон memcached.
Пример: define("BX_MEMCACHE_HOST", "192.168.0.43"); |
BX_MEMCACHE_PORT | Не обязательная, по умолчанию принимает значение 11211. |