PHP OPcache и JIT: тонкая настройка для максимальной скорости

PHP · 19.04.2026
PHP OPcache и JIT: тонкая настройка для максимальной скорости

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 в реальном времени.
← Назад в базу знаний Задать вопрос поддержке