Тюнинг PHP OPcache и JIT для Production: 10-кратный прирост скорости PHP 8.x
Готовый конфиг 10-opcache.ini для PHP 8.1 - 8.4: opcache.validate_timestamps=0 для продакшена, JIT компилятор opcache.jit=1255, preloading скриптов.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/php/8.3/fpm/conf.d/10-opcache.ini
# /etc/php/8.3/fpm/conf.d/10-opcache.ini
[opcache]
opcache.enable = 1
opcache.enable_cli = 1
; Память под байткод PHP (в МБ)
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
; Максимальное количество кэшируемых файлов (выбирайте простое число из таблицы: 7963, 16229, 32531, 65407)
opcache.max_accelerated_files = 32531
; На проде отключаем проверку изменения файлов на диске (ликвидирует stat I/O)
opcache.validate_timestamps = 0
opcache.revalidate_freq = 0
opcache.save_comments = 1
opcache.fast_shutdown = 1
; PHP 8 JIT Компиляция (Just-In-Time)
opcache.jit = 1255
opcache.jit_buffer_size = 128M
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
opcache.validate_timestamps = 0 |
0 (отключено на проде) | PHP перестает опрашивать диск при каждом запросе на предмет изменения файлов, увеличивая производительность на 30-50%. |
opcache.jit = 1255 |
Tracing JIT режим | Транслирует горячий байткод PHP напрямую в машинные инструкции процессора (x86_64). |
pm.max_requests |
500 - 1000 | Периодически перезапускает PHP-воркеры после обработки N запросов, предотвращая утечки оперативной памяти (Memory Leak). |
request_terminate_timeout |
180s | Принудительно убивает зависшие PHP-скрипты, защищая пул от полного исчерпания свободных процессов при тяжелых SQL-запросах. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 2-4 GB RAM, NVMe
Расчетная нагрузка: Любой проект на PHP 8.x
2 CPU / 4 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
2 vCPU / 4 GB RAM
Selectel
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Turbo 4 GB
Beget
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Как сбросить OPcache после загрузки нового кода при validate_timestamps=0?
Выполните `systemctl reload php8.3-fpm` при каждом деплое через SSH или CI/CD пайплайн.
Как понять, что пулу PHP-FPM не хватает памяти?
В логе `/var/log/php-fpm.log` появляется предупреждение `server reached pm.max_children setting, consider raising pm.max_children`. Также команда `dmesg | grep oom` покажет OOM-киллер.
Нужно ли перезагружать службу после изменения параметров?
Да, для применения настроек выполните: `systemctl restart php8.2-fpm` (или вашу версию PHP) и `systemctl restart mysql`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.