В версии 8.5.1 главного модуля появилась поддержка кеширования не только на диск, но и в разделяемую память. [spoiler] Акселераторы PHP поддерживают API работы с разделяемой памятью. Это значит, что все процессы веб-сервера могут читать и писать в общее адресное пространство. Это позволяет организовать совместно используемый синхронный кеш.
Вы можете сказать: "Но ведь данные приложения, кешированные в файл, кешируются на уровне файловой системы". На что можно ответить: "Бывают ситуации (например: резервное копирование) когда этот кеш вытесняется и становится не эффективным для использования". Преимуществом разделяемого кеша акселераторов является его нахождение в оперативной памяти. Случай свопинга не рассматриваем т.к. наличие свопинга говорит о неадекватной настройке хостинга. На производительной системе свопинга быть не должно. Вообще. Недостатком - его полный сброс при перезапуске веб сервера.
1. APC Использует уже имеющиеся механизмы разделяемой памяти. Предоставляя PHP программисту функции apc_fetch, apc_store и apc_delete. Недостаток 1: использует общую для скриптов и кеша память. Недостаток 2: при кешировании требуется сериализация данных.
2. eAccelerator При сборке расширения необходимо указать "--with-eaccelerator-shared-memory". Имеет те же недостатки, что и APC. Достоинство: есть возможность настроить сохранение кеша на диск.
3. Кроме акселераторов, схожим, но гораздо более богатым функционалом обладает демон memcached.
Это отдельный процесс использующий для коммуникаций протокол TCP/IP, который может поддерживать распределенный, разделяемый, синхронный кеш. К серверу на котором запущен memcached можно подключить более одного веб сервера. Использование memcached решает проблемы кеша акселераторов, но на первое место выходит штраф производительности из-за транспорта протокола.
На Ubuntu запустить memcached проще простого: Установка:
aptitude install memcached
настройки находятся в хорошо документированном файле:
/etc/memcached.conf
Запуск:
/etc/init.d/memcached start
Для PHP имеется три расширения для работы с сервером memcached. На данный момент Битрикс поддерживает "memcache".
4 Настройка Битрикса: Управление кешем реализуется через константы определяемые в файле dbconn.php Самая важная "BX_CACHE_TYPE" может принимать следующие значения:
files - использовать в качестве хранилища кеша диск. Это полностью совместимое поведение. При неудачных попытках включения других типов кеша будет использован именно этот тип.
memcache - подключаться к memcached для сохранения кеша. Включится только приналичии загруженного расширения "memcache" и установлении соединения с сервером.
eaccelerator - использовать в качестве хранилища разделяемую область памяти eAccelerator'а.
apc - APC.
Пример:
define("BX_CACHE_TYPE", "memcache");
Вторая константа "BX_CACHE_SID". Ее просто НЕОБХОДИМО определять, если на одном сервере запущено более одного Битрикса. Это соль которая будет подмешана ко всем ключам кеша. И позволит им "не перепутаться" (что я удивленный и наблюдал во время тестирования).
sorry for writing in english(i do understand russian). i do agree there's some loss in performance comparing memcaced vs apc. in my opinion the main advantage of memcached is that you get high availibility by defining memcached servers pool (See php manual for memcache::addServer). It would be great if alternatively BX_MEMCACHE_HOST could be defined as an array of memcached servers for now i did this by editing /bitrix/modules/main/classes/general/cache_memcache.php 8)
1. весь кеш из папок /bitrix/cache /bitrix/managed_cache и /bitrix/stack_cache будет храниться в оперативной памяти? т.е. принимая решение об объеме RAM для memcahed можно ориентироваться только на размеры этих трех папок?
2. Чисто теоретически я предполагаю, что это будет работать в разы быстрее: взятие кеша из памяти, а не из файлов. Но вот хостинг меня убеждает, что для проекта нет такой необходимости, и нагрузки на файловую систему нет. Как вы считаете?
Я рассчитываю получить повышение производительности в разы за счет memcahed, т.к. у нас кешируется все и везде)
прочитал комментарии, что-то действительно выходит, что memcahed не даст супер-убыстрения, которого мне бы хотелось файловая система достаточно шустрая 11 539.6 файловых операций в секунду, видать установка memcahed не принесет ожидаемого результата....
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».