Налаштування PHP-акселераторів для 1С-Бітрікс

PHP-акселератори для 1С-Бітрікс: налаштування OPcache, JIT та APCu Ви включили OPcache, поставили свіжу версію PHP, а сторінки все одно завантажуються повільно? Типова ситуація: кеш байткоду є, але Бітрікс все ще довго думає на кожному запиті. Ми стикаємося з цим на кожному другому проєкті під ча
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування PHP-акселераторів для 1С-Бітрікс
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1164

PHP-акселератори для 1С-Бітрікс: налаштування OPcache, JIT та APCu

Ви включили OPcache, поставили свіжу версію PHP, а сторінки все одно завантажуються повільно? Типова ситуація: кеш байткоду є, але Бітрікс все ще довго думає на кожному запиті. Ми стикаємося з цим на кожному другому проєкті під час аудиту продуктивності. Проблема часто в неузгодженому налаштуванні трьох механізмів: OPcache (кеш байткоду), JIT-компіляції (PHP 8.0+) та APCu (кеш даних у пам'яті). Правильна комбінація дає приріст швидкості обробки PHP до 20–40%, а іноді й більше — якщо вузьким місцем був CPU.

Чому OPcache не вирішує всі проблеми?

OPcache пришвидшує повторне виконання скриптів — парсинг і компіляція відбуваються один раз. Але Бітрікс — важкий додаток із тисячами файлів і складною логікою. Навіть з OPcache кожен запит витрачає час на ініціалізацію ядра, завантаження модулів, підключення до БД. JIT-компіляція бере на себе наступний крок: перетворює гарячий байткод у машинний код. Теоретичний приріст — до 5 разів, але на практиці для веб-сайтів з I/O-залежністю (БД, диск) JIT дає 5–15%. Однак на сторінках з інтенсивними обчисленнями (наприклад, генерація звітів, обробка кошика) ефект помітний.

Як правильно налаштувати JIT?

Ми рекомендуємо наступну конфігурацію в php.ini:

[opcache] opcache.enable = 1 opcache.memory_consumption = 192 opcache.jit = 1255 opcache.jit_buffer_size = 64M 

Параметр 1255 — не магія, а код, що вказує режим трасування та рівень оптимізації. Для стабільності можна використовувати tracing:

opcache.jit = tracing opcache.jit_buffer_size = 32M 

Tracing ефективніший для циклів, але на коротких запитах (типових для Бітрікс) виграш менший. Підбирати режим потрібно під навантажувальний профіль конкретного проєкту.

Встановлення та налаштування APCu

APCu надає сховище ключ-значення у спільній пам'яті. Бітрікс використовує його через власний шар кешування (Bitrix\Main\Data\ManagedCache). Встановлення через PECL:

pecl install apcu echo "extension=apcu.so" > /etc/php.d/40-apcu.ini 

Конфігурація (файл php.ini або /etc/php.d/40-apcu.ini):

[apcu] apc.enabled = 1 apc.shm_size = 128M apc.ttl = 3600 apc.user_ttl = 3600 apc.gc_ttl = 600 apc.slam_defense = 1 apc.enable_cli = 0 

apc.slam_defense = 1 захищає від «dog-pile effect»: при застаріванні кешу лише один процес генерує значення, інші чекають або використовують застарілі дані.

Підключення APCu до кешування Бітрікс

У файлі /bitrix/php_interface/dbconn.php прописуємо:

define("CACHED_b_file", 3600); define("CACHED_b_agent", 3610); define("CACHED_b_lang", 3600); define("CACHED_b_option", 3600); define("CACHED_b_iblock", 3600); define("BX_CACHE_TYPE", "apc"); define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"] . "/"); 

Після цього Бітрікс зберігатиме кеш в APCu. Інвалідація відбувається за тегами — система записує теги в таблицю b_cache_tag і перевіряє їх при кожному запиті.

Порівняння механізмів кешування

Механізм Призначення Типовий приріст Споживання пам'яті
OPcache Кеш байткоду 30–50% (CPU) 128–192 MB
JIT Компіляція гарячого коду 5–15% 32–64 MB
APCu Кеш даних (результати запитів) 20–40% (CPU) 128 MB

Тонкий момент: декілька сайтів на сервері

APCu живе у shared memory процесу PHP-FPM. Два сайти на одному пулі ділять один простір APCu. Щоб кеш одного не затер кеш іншого, використовуйте різні PHP-FPM пули і задайте унікальний BX_CACHE_SID, що включає $_SERVER["DOCUMENT_ROOT"] (як у прикладі вище).

Що входить у налаштування під ключ

  • Аудит поточної конфігурації PHP та сервера
  • Визначення оптимальних параметрів OPcache, JIT, APCu під навантажувальний профіль
  • Встановлення та налаштування розширень
  • Тестування продуктивності за допомогою ab або JMeter
  • Навчання команди основам моніторингу
  • Письмовий звіт із рекомендаціями щодо подальшої оптимізації

Часті помилки при налаштуванні

  • Забувають вимикати OPcache у режимі розробки — отримують «старий» код
  • Встановлюють занадто малий opcache.memory_consumption — кеш витискається
  • Не перевіряють, що APCu доступний з PHP (функція apcu_enabled() повертає false)
  • Використовують Swoole або FrankenPHP без адаптації коду — це призводить до витоків пам'яті та нестабільності

Тестування результату

Вимірюємо до та після утилітою ab:

ab -n 1000 -c 10 http://site.ru/catalog/ | grep "Requests per second" 

Очікуваний приріст на типовій сторінці каталогу — 20–40%. Якщо приросту немає, ймовірно, вузьке місце в БД, а не в PHP.

Наш досвід: понад 50 проєктів з оптимізації Бітрікс, середнє прискорення — 30%. Гарантуємо прозорість налаштувань і навчання вашої команди. Зв'яжіться з нами для попередньої оцінки — ми проаналізуємо поточну конфігурацію та запропонуємо план робіт.

Примітка: Для глибокої оптимізації також варто розглянути кешування на рівні веб-сервера (nginx fastcgi cache), використання CDN та налаштування черг для фонових завдань (агенти Бітрікс). Докладніше про кешування в офіційній документації розробника Бітрікс.

Чек-лист налаштування акселераторів
  • [ ] Перевірити версію PHP (>=8.0 для JIT)
  • [ ] Встановити розширення OPcache (вбудовано) та APCu
  • [ ] Налаштувати php.ini згідно з рекомендаціями
  • [ ] Перевірити через phpinfo() що OPcache і APCu активні
  • [ ] Виконати навантажувальне тестування до та після