Настройка PHP OPcache для оптимизация работы сайта

Allsoft

Zend OPcache - PHP-акселератор, обеспечивает ускорение выполнения PHP кода благодаря кэшированию и оптимизации, сохраняет скомпилированный байт-код в разделяемой памяти.

Opcache позволяет значительно ускорить скорость генерации страниц.

OPcache включен по умолчанию начиная с PHP 5.5

Создадим файл конфигурации OPcache:

echo > /etc/php.d/10-opcache.ini

и добавим в него конфиг (пример конфигурации)

Не стоит использовать готовые конфигурации найденные в интернете. Это может привет к остановке работы сайта. Подбирайте индивидуально.

opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=130987
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_path=1
opcache.enable_file_override=1
opcache.fast_shutdown=1
opcache.save_comments=1
opcache.load_comments=1

После чего необходимо перезапустить веб сервер, в данном случае apache

service httpd restart

Включить JIT в PHP 8

Компилятор JIT (Just In Time) в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в реальном времени. Что позволяет еще больше повысить производительность.

Для включения необходимо указать размер буфера opcache.jit_buffer_size, по умолчанию 0.

Добовляем в наш файл /etc/php.d/10-opcache.ini строку:

opcache.jit_buffer_size=128M

и перезапускаем веб сервер, это все что требуется.

Опции OPcache

Опция По молчанию Описание
opcache.enable 1 включение/выключение OPcache
opcache.enable_cli 0 включение OPcache при вызове PHP из командной строки
opcache.memory_consumption 64 размер используемой памяти (в мб.) для хранения прекомпилированного PHP-кода
opcache.interned_strings_buffer 4 количество памяти для пула строк в мегабайтах
opcache.max_accelerated_files 2000 максимальное количество ключей в хэш-таблице OPcache, допустимы значения между 200 и 1000000
opcache.max_wasted_percentage 5 максимальный процент замусоренной памяти для запланированного перезапуска
opcache.use_cwd 1 при включении добавляет текущую рабочую директорию в ключ скрипта для предотвращения возникновения колизий между файлами с одинаковым именем
opcache.validate_timestamps 1 возможность обнуления OPcache вручную или перезапуском веб-сервера для того, чтобы привести в актуальное состояние данных об изменениях в файлах
opcache.revalidate_freq 2 через какой промежуток времени (в секундах) проверять изменения временных меток для поддержания данных в памяти в актуальном состоянии, где 1 — проверка с периодичностью раз в секунду, 0 — постоянная проверка.
opcache.file_update_protection 2 предотвращает кэширование файлов, которые были изменены меньше, чем в указанное время (в секундах)
opcache.revalidate_path включение или отключение оптимизации поиска файлов в include_path
opcache.save_comments 1 если выключено, все комментарии PHPDoc будут удалены из кода с целью уменьшения размера оптимизированного кода.
opcache.load_comments 1 если выключено, то комментарии PHPDoc не будут загружаться из общей памяти
opcache.fast_shutdown 0 если включено, будет использоваться последовательность быстрых выключений для оптимизированного кода
opcache.enable_file_override 0 при включении OPcache будет проверять наличие закэшированного файла при вызовах file_exists(), is_file() и is_readable()
opcache.optimization_level 0xffffffff битовая маска, в которой каждый бит включает или отключает в соответствующие проходы OPcache
opcache.inherited_hack 1 включение этого хака при ошибках вида can't redeclare class
opcache.dups_fix 0 Необходимо включить при появлении ошибок вида Can't redeclare class
opcache.blacklist_filename месторасположение списка файлов, к которым запрещен доступ для OPcache
opcache.max_file_size 0 указывает максимальный размер файла для кеширования, позволяет исключать большие файлы
opcache.consistency_checks 0 проверять контрольную сумму кэша каждое N-ое количество запросов, подсчет контрольной суммы снижает производительность
opcache.force_restart_timeout 180 время ожидания (в секундах) перед перезагрузкой в случае недоступности кэша
opcache.error_log определение названия и местоположения лога ошибок OPcache
opcache.log_verbosity_level 1 все ошибки OPcache отправляет в лог-файл веб-сервера. По умолчанию логируются только критические ошибки (0) и обычные ошибки (1).

Дополнительно можно включить предупреждения (2), информационные сообщения (3) или отладочную информацию (4).

opcache.preferred_memory_model предпочитаемая модель общей памяти
opcache.protect_memory 0 защита общей памяти от несанкционированной записи во время выполнения
opcache.restrict_api разрешение вызова API-функций OPcache из PHP-скриптов
opcache.jit_buffer_size 0 Объем разделяемой памяти, резервируемый для скомпилированного JIT-кода
opcache.jit tracing Степерь оптимизации
  • disable: Полностью отключён, не может быть включён во время выполнения.
  • off: Отключено, но может быть включено во время выполнения.
  • tracing/on: Используйте трассировку JIT. Включено по умолчанию и рекомендуется для большинства пользователей.
  • function: Использование функции JIT.

 

Добавить комментарий