2.3.4. OPcache та JIT
Оплата
На віртуальному хостингу OPcache оплачується подобово з балансу, на бізнес-хостингу входить у вартість тарифу. JIT доступний тільки на бізнес-хостингу і входить у вартість тарифу.OPcache
OPcache призначений для кешування скомпільованого байт-коду PHP-скриптів в оперативній пам'яті. Його використання дає змогу певною мірою прискорити роботу скриптів сайту і знизити створюване ними навантаження на веб-сервер. OPcache можна використовувати на будь-яких сайтах, спеціальна підтримка з боку сайтів не потрібна.
Замовлення та виділення пам'яті
Важливі моменти:
- При замовленні для віртуального хостингу на балансі має бути сума для оплати мінімум 1 місяця використання послуги.
- OPcache доступний тільки для сайтів з версією PHP не нижче 5.5.
- Максимальний об'єм пам'яті, який можна виділяти для OPcache:
- Віртуальний хостинг — 4 ГБ для кожного сайту.
Бізнес-хостинг — не більше 20% об'єму оперативної пам'яті тарифу сумарно для всіх сайтів хостинг-акаунта.
- Пам'ять виділяється з кроком 32 МБ.
- Неможливо заздалегідь визначити необхідний сайту об'єм пам'яті для OPcache. Конкретне значення можна з'ясувати тільки експериментальним шляхом — виділити пам'ять і проаналізувати зібрану статистику. Для більшості сайтів рідко потрібно більше 32 МБ.
- Виділення сайту занадто маленького об'єму пам'яті для OPcache може викликати помилку 503.
- Відкрийте розділ «Налаштування PHP» і переключіться на вкладку «OPcache».
- У блоці «Налаштування OPcache» у полі «Виділений об'єм пам'яті» виберіть потрібний об'єм пам'яті та натисніть «Зберегти»:

- Зачекайте приблизно 15 хвилин, поки зміни набудуть чинності.
Налаштування
Параметр «Частота перевірки змін у файлах» (opcache.revalidate_freq) за замовчуванням дорівнює нулю. Це означає, що при кожному запиті буде перевірятися, чи змінювався скрипт і чи можна його все ще брати з кеша або потрібно викликати заново. Використовувати значення більше нуля має сенс, якщо до сайту надходить велика кількість запитів і його файли не редагуються. Це дасть деякий приріст продуктивності за рахунок зниження кількості дискових операцій.
Статистика
Важливі моменти:
- Дані статистики оновлюються при кожному відкритті сторінки статистики. Також їх можна оновлювати вручну кнопкою в заголовку блоку зі статистикою.
- Повністю заповнене сховище OPcache не створюватиме помилок у роботі сайту, але це може бути однією з ознак необхідності збільшення виділеного об'єму пам'яті для кешування.
- При заповненні сховища на 100% непопулярні та старі дані будуть перезаписані більш популярними, хвилюватися з приводу ефективності кешування не варто.
- Для доступу до статистики сайт має бути доступний по HTTP і в .htaccess не має бути директив, що можуть заважати прямому доступу до файлів виду
opcache-stat-XXxxxXxXXXXXX.phpу кореневому каталозі сайту.
Перегляд статистики:
- Відкрийте розділ «OPcache».
- У блоці «Сайти з увімкненим OPcache» у рядку з потрібним сайтом натисніть «Статистика»:

Приклад статистики:
- Відсоток зайнятої пам'яті.
- Відсоток вільної пам'яті.
- Відсоток втраченої (wasted) пам'яті. Втрачена пам'ять — це пам'ять, яка зайнята вже застарілими, неактуальними даними. Вона з'являється через зміну скриптів або неможливість використовувати для них поточні дані. Така пам'ять очищається автоматично при досягненні певної частки максимуму від загальної пам'яті, тому ручне очищення не потрібне. Такий підхід забезпечує більш швидку роботу OPcache.
Діаграма «Відсоток від усіх запитів» показує:
- Влучання — статистика запитів до скриптів, які перебували в кеші, і було надано результат без виконання вихідного коду.
- Промахи — статистика запитів до скриптів, які не перебували в кеші та були виконані.
Список опцій OPcache та їхні поточні значення:

Очищення кешу
- Відкрийте розділ «Налаштування PHP» і переключіться на вкладку «OPcache».
- У блоці «Налаштування OPcache» натисніть «Очистити кеш».
Вимкнення
- Відкрийте розділ «Налаштування PHP» і переключіться на вкладку «OPcache».
- У блоці «Налаштування OPcache» у полі «Виділений об'єм пам'яті» виберіть «Вимкнений» і натисніть «Зберегти»:

- Зачекайте приблизно 15 хвилин, поки зміни набудуть чинності.
JIT
JIT (Just-In-Time) працює спільно з OPcache і компілює код в інструкції процесора безпосередньо під час його виконання, тим самим частина коду виконується взагалі без віртуальної машини Zend і передається на виконання безпосередньо процесору. Завдяки цьому код може виконуватися ще швидше, ніж при використанні OPcache без JIT.
Ефект від використання JIT помітніший з тим кодом, який виконує активні обчислення та інтенсивно використовує ресурси процесора, і менш помітний за великої кількості операцій введення/виведення.
Виділення пам'яті
Важливі моменти:
- Версія PHP має бути не нижче 8.0.
- Об'єм пам'яті, що виділяється, не може перевищувати об'єм пам'яті для OPcache.
- ionCube має бути вимкнений.
- Увімкніть OPcache (якщо не увімкнений).
- Відкрийте розділ «Налаштування PHP» і переключіться на вкладку «OPcache».
- У блоці «Налаштування OPcache» у секції «OPcache JIT» у полі «Виділений об'єм пам'яті» виберіть потрібний об'єм пам'яті, налаштування і натисніть «Зберегти»:

- Зачекайте приблизно 15 хвилин, поки зміни набудуть чинності.
Перевірка статусу
Перевірити статус JIT можна простим PHP-скриптом:
<?php
var_dump(opcache_get_status()['jit']);
Результат буде приблизно таким:
array(7) {
["enabled"]=>
bool(true)
["on"]=>
bool(true)
["kind"]=>
int(5)
["opt_level"]=>
int(5)
["opt_flags"]=>
int(6)
["buffer_size"]=>
int(33554416)
["buffer_free"]=>
int(33551984)
}
Якщо значення enabled і on дорівнюють true, значить усе гаразд.
Налаштування
Для JIT можна налаштовувати використання оптимізації процесора, розподіл регістрів, умови спрацьовування компіляції (тригер) і рівень оптимізації:
Найоптимальнішим вважається значення 1255 (як на скріншоті вище), яке дає змогу задіяти JIT на максимум.
Вимкнення
- Відкрийте розділ «Налаштування PHP» і переключіться на вкладку «OPcache».
- У блоці «Налаштування OPcache» у секції «OPcache JIT» у полі «Виділений об'єм пам'яті» виберіть «Вимкнений» і натисніть «Зберегти»:

- Зачекайте приблизно 15 хвилин, поки зміни набудуть чинності.
Коментарі