PHP OPcache и JIT: полная настройка
OPcache кэширует скомпилированный байт-код PHP, устраняя повторную компиляцию при каждом запросе. JIT (Just-In-Time, доступен с PHP 8.0) компилирует байт-код в машинный код — ускорение до 3x для CPU-интенсивных задач.
Базовая настройка OPcache
[opcache]
opcache.enable=1
opcache.enable_cli=0
; Память под кэш байт-кода (мб)
opcache.memory_consumption=256
; Память под строки (мб)
opcache.interned_strings_buffer=16
; Максимум файлов в кэше
opcache.max_accelerated_files=20000
; Проверка изменений файлов (0 = никогда, продакшн)
opcache.validate_timestamps=0
; Перекомпиляция при изменении (dev: 1, prod: 0)
opcache.revalidate_freq=0
; Сохранять комментарии (нужно для Doctrine/аннотаций)
opcache.save_comments=1Настройка JIT (PHP 8.0+)
; JIT буфер
opcache.jit_buffer_size=128M
; Режимы JIT:
; 0 = отключён
; tracing (1255) — лучший для веб-приложений
; function (1205) — для CLI/скриптов
opcache.jit=tracingВажно: JIT не ускоряет I/O-bound приложения (WordPress, типичный CRUD). Заметный прирост дают математические вычисления, генерация изображений, машинное обучение.
Профили для разных окружений
; --- PRODUCTION ---
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.jit=tracing
opcache.jit_buffer_size=128M
; --- DEVELOPMENT ---
opcache.validate_timestamps=1
opcache.revalidate_freq=0 ; проверять при каждом запросе
opcache.jit=0 ; JIT мешает xdebugМониторинг состояния OPcache
Hit rate выше 95% — хороший показатель. Ниже 80% — увеличьте opcache.memory_consumption.
Сброс кэша при деплое
# Через PHP-CLI
php -r "opcache_reset();"
# Через nginx + PHP-FPM: reload воркеров
php-fpm8.3 -t && systemctl reload php8.3-fpmИнструмент: Установите opcache-gui — наглядный веб-интерфейс для мониторинга OPcache в реальном времени.