Інструкція по налаштуванню кешування

Використання кешування в оперативній пам'яті

У версії 8.5.1 головного модуля з'явилася підтримка кешування не тільки на диск, але і в пам'ять, що розділяється.

Перевагою розділяється кеша акселераторів є його знаходження в оперативній пам'яті. Використання свопинга говорить про неадекватну налаштування хостингу. Недолік своп-файлу - його повне скидання при перезапуску веб-сервера.

PHP додатки

Використовує вже наявні механізми розділяється пам'яті. Надаючи PHP програмісту функції apc_fetch. apc_store і apc_delete.
  • Недолік 1: використовує загальну для скриптів і кеша пам'ять.
  • Недолік 2: при кешування потрібно сериализация даних.

При складанні розширення необхідно вказати "--with-eaccelerator-shared-memory". Має ті ж недоліки, що і APC. Гідність: є можливість налаштувати збереження кеша на диск.

Примітка. eAccelerator не сумісний з PHP версій вище 5.3

Чи не підтримується з версії 15.5.0

демон memcached

Крім акселераторів, схожим, але набагато більш багатим функціоналом володіє демон memcached.

Це окремий процес використовує для комунікацій протокол TCP / IP, який може підтримувати розподілений, розділяється, синхронний кеш. До сервера, на якому запущено memcached, можна підключити більше одного веб-сервера. Використання memcached вирішує проблеми кеша акселераторів, але на перше місце виходить штраф продуктивності через транспорту протоколу.

Приклад роботи з memcached на Ubuntu. установка:

Налаштування демона добре задокументовані і розташовані файлі /etc/memcached.conf

Для PHP є три розширення для роботи з сервером memcached. На даний момент "1С-Бітрікс: Управління сайтом" підтримує розширення memcache. При цьому при використанні memcache до нього можна підключитися через unixsocket:

Однак попередньо потрібно налаштувати memcached для роботи через сокети. Для цього необхідно в файлі настройки memcached змінити Сточки OPTIONS = "" на OPTIONS = "- s /tmp/memcached.sock -a 00755". І тільки після цього вносити зміни в dbconn.php.

Налаштування Бітрікс

Управління кешем реалізується через константи визначаються у файлі dbconn.php (В версії ядра вище 14.0 настройки проводяться в інших файлах).

Найважливіша з усіх. Може приймати наступні значення:
  • files - використовувати в якості сховища кеша диск. Це повністю сумісний поведінку. При невдалих спробах включення інших типів кеша буде використаний саме цей тип.
  • memcache - підключатися до memcached для збереження кеша. Включиться тільки приналичии завантаженого розширення "memcache" і встановленні з'єднання з сервером.
  • eaccelerator - використовувати в якості сховища розділяється область пам'яті eAccelerator'а. (Важливо! EAccelerator починаючи з версії 0.9.6 не підтримує призначені для користувача функції кешування, а значить для цієї версії описаний тут механізм працювати не буде.)
  • apc - APC.
  • xcache - XCache.

приклад:

Обов'язково визначати, якщо на одному сервері запущено більш одного екземпляра "1С-Бітрікс: Управління сайтом". Це сіль яка буде подмешана до всіх ключам кеша. І дозволить їм "не переплутати".

Чи не обов'язкова, за замовчуванням приймає значення 11211.

Примітка. Система перевіряє щоб параметр eaccelerator.shm_max був встановлений в нульове значення.

BX_CACHE_SID Обов'язково визначати, якщо на одному сервері запущено більш одного екземпляра "1С-Бітрікс: Управління сайтом".


І назад - якщо на одній копії продукту розміщено кілька сайтів, для всіх них значення має бути однакове. Інакше, кеш, створений на одному сайті коробки не буде видно на іншому сайті. Це критично для COption, кеш якої повинен бути загальним для все сайтів.

Слід також враховувати, що при використанні FastCGI у кожного процесу PHP буде свій кеш APC / eAccelerator, що призведе одночасно до багаторазового кешуванню одних і тих же даних і "дивним" поведінки продукту.

Проблема може бути вирішена передачею управління нащадками самому PHP (через опцію PHP_FCGI_CHILDREN), що не рекомендується, так як сам PHP має набагато менше можливостей по управлінню нащадками. Також використання PHP_FCGI_CHILDREN в mod_fcgid (але не в mod_fastcgi) може значно обмежити продуктивність, тому що mod_fcgid одночасно передає тільки один запит процесу PHP, незалежно від кількості його нащадків.

Таким чином, при використанні FastCGI розумним вибором будуть спочатку розділяються кеші - в файлах або memcached.

Схожі статті