Zend OPcache Акселератор PHP


Как известно акселераторы PHP призваны повысить производительность скриптов PHP за счет кеширования байт-кода.

Обычно выполнение скрипта происходит по схеме:

  • Чтение файла скрипта
  • Генерация байткода
  • Выполнение кода
  • Вывод результата

Если не использовать акселераторы php то генерация байткода происходит каждый раз когда вызывается скрипт и на это затрачивается часть времени.

И так если мы хотим немного ускорить наш сайт то ставим Zend OPcache (поддерживается в версиях PHP 5.2.x, 5.3.x, 5.4.x. а начиная с версии PHP 5.5 OPcache включен в официальный дистрибутив.).

Zend OPcache доступен в виде исходников на Github, либо в виде PECL дистрибутива.

И так установка на CentOS

Установка PECL

yum install php-pear

Пакеты по зависимостям

yum install php-devel  gcc

Скачиваем с сайта пакет для установки

wget http://pecl.php.net/get/zendopcache-7.0.5.tgz

Установка Zend OPcache как пакет PECL

pecl install zendopcache-7.0.5.tgz

После установки добавляем строку zend_extension=/usr/lib64/php/modules/opcache.so в файл /etc/php.d/opcache.ini

echo "zend_extension=/usr/lib64/php/modules/opcache.so" > /etc/php.d/opcache.ini

По рекомендации разработчиков можно добавить данные настройки в файл /etc/php.d/opcache.ini

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

Перезапускаем Apache


Настроки Zend Opcache:

Параметр Default Описание
opcache.enable 1 Включение/выключение OPcache. В выключенном состоянии код не оптимизируется и не кешируется.
opcache.enable_cli 0 Включение OPcache для CLI-версии PHP. Подходит для тестирование и отладки.
opcache.memory_consumption 64 Размер используемой памяти для хранения прекомпилированного PHP-кода. Указывается в мегабайтах.
opcache.interned_strings_buffer 4 Количество памяти для пула строк в мегабайтах.
opcache.max_accelerated_files 2000 Максимальное количество ключей (скриптов) в хэш-таблице OPcache.
Число должно быть простым и быть больше, чем те, что приведены в примере:( 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 ).
Допустимы числа между 200 и 1000000.
opcache.max_wasted_percentage 5 Максимальный процент “замусоренной” памяти для запланированного перезапуска.
opcache.use_cwd 1 При включении этого параметра, OPcache добавляет текущую рабочую директорию в ключ скрипта для предотвращения возникновения колизий между файлами с одинаковым именем. Выключение этой функции увеличивает производительность, но может нарушить работу приложений.
opcache.validate_timestamps 1 При отключенном параметре, появляется возможность обнуления OPcache вручную или перезапуском вебсервера для того, чтобы привести в актуальное состояние данных об изменениях в файлах.
opcache.revalidate_freq 2 Через какой промежуток времени (в секундах) проверять изменения временных меток для поддержания данных в памяти в актуальном состоянии. (“1” означает проверку с периодичностью раз в секунду для запроса, “0” — постоянная проверка)
opcache.file_update_protection 2 Предотвращает кеширование файлов, которые были изменены меньше, чем в указанное время (в секундах). Эта возможность защищает не полностью обновленные файлы от кеширования. В случае мгновенного обновления всех файлов, для увеличения производительности установите параметр равный “0”.
opcache.revalidate_path 0 Включение или отключение оптимизации поиска файлов в include_path. Если поиск файлов выключен и будет найден закешированный файл, используемый в include_path, файл не будет найден повторно. Таким образом, если файл с именем, попадающийся где-либо еще в include_path, он не будет найден. Включайте этот параметр только в случае, если это действительно принесет ожидаемый эффект ускорения. По умолчанию возможность отключена, т.е оптимизация активирована.
opcache.save_comments 1 Если выключено, все комментарии PHPDoc будут удалены из кода с целью уменьшения размера оптимизированного кода. Отключение параметра может вызвать некорректную работу некоторых приложений или фреймворков
opcache.load_comments 1 Если выключено, комментарии PHPDoc не будут загружаться из общей памяти. При включении вывода, комментарии будут сохранятся, но выводиться приложениями только в случае надобности.
opcache.fast_shutdown 0 Если включено, будет использоваться последовательность быстрых выключений для оптимизированного кода. Эта возможность не освобождает каждый используемый блок памяти, но позволяет работать Zend Engine Memory Manager.
opcache.enable_file_override 0 При включении OPcache будет проверять наличие закешированного файла при вызовах file_exists(),is_file() и is_readable(). Это может увеличить скорость работы в приложениях, которые проверяют расширение и читабельность PHP-скриптов, но появляется риск вывода устаревших данных в случае отключения параметра opcache.validate_timestamps.
opcache.optimization_level 0xffffffff Маска битности, в которой каждый бит включает или отключает в соответствующие проходы OPcache.
opcache.inherited_hack 1 Включение этого хака в качестве рабочего окружения при ошибках.
opcache.dups_fix 0 Включайте этот параметр только при появлении ошибок вида «Cannot 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 отправлять в лог-файл лог-файл веб-сервера. По умолчанию, журналируются только критические ошибки (level 0) или обычные ошибки (level 1). Так же можно включить выводит предупреждений (level 2), информационных сообщений (level 3) или отладочную информацию (level 4).
opcache.preferred_memory_model Предпочитаемый бэк-энд общей памяти. Можно оставить пустым и позволить системе самой разобраться.
opcache.protect_memory 0 Защите общей памяти от несанкционированной записи во время выполнения скрипта. Полезно только для отладки.
opcache.restrict_api Разрешение вызова API-функций OPcache из PHP-скриптов, путь к которым начинается тем, что указано в строке. По умолчанию пустое значение означает запрет на всё.

Для тестирования и мониторинга Zend OPcache есть несколько удобных интерфейсов.

Каждый из этих интерфейсов представляет собой небольшой PHP скрипт, который просто загружается на хост и открывается при помощи броузера.

#php #CentOS

Copyright © 2019