Используем OPCache для повышения производительности PHP на веб сервере

Используем OPCache для повышения производительности PHP на веб сервере

Zend Opcache – это расширение PHP, предназначенное для повышения производительности PHP, сокращения времени загрузки веб-страниц и уменьшения нагрузки на сервере.

Производительность достигается путем компиляции кода PHP файлов при первом обращении к ним. В результате при следующем доступе сервер не тратит ресурсы на повторное чтение и компиляцию php файла, а отдает готовый результат из кэша opcache. Т.е. opcache дает хорошие результаты для cms/файлов php скриптов, код которых редко изменяется.

В данной статье мы рассмотрим установку расширения OPcache, его настройку и использование с веб-сервером apache на примере Linux CentOS.

Установка расширения OPcache

Перед установкой самого расширения, нужно подключить репозитории EPEL и remi, а затем обновить пакеты на сервере с помощью yum (dnf):

# dnf install epel-release -y
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
# dnf update -y

Теперь можно установить opcahce для php:

# dnf install php-opcache -y

linux установка php-opcache

На этом установка расширения OPcache завершена.

Настройка параметров OPcache в конфигурационном файле

Конфигурационный файл OPCache находится в директории /etc/php.d. Откройте его и очистите от стандартных записей:

# nano /etc/php.d/10-opcache.ini

Добавьте следующие универсальные настройки, которые подходят для большинства php проектов:

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=512
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.save_comments=1
opcache.load_comments=1
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist

подключение модуля opcache в конфигурационном файле php.d

После сохранения файла php.d перезапустите веб-сервера. В моем случае это apache:

# service httpd restart

Проверьт, что модуль Zend OPcache Engine подключён:

# php -v

php -v проверка что подключен модуль zend opcache engine

Модуль успешно подключен. Рассмотрим опции, которые мы исопльзовали в конфигурационном файле:

  • zend_extension=opcache.so
    – подключение модуля расширения
  • opcache.enable=1
    — включение/отключение OPcache
  • opcache.memory_consumption=512
    – размер памяти для хранения кэша
  • opcache.interned_strings_buffer=512
    — размер памяти для пула строк
  • opcache.max_accelerated_files=100000
    — максимальное количество ключей в хэн-таблице OPcache
  • opcache.max_wasted_percentage=1
    – максимальный процент потерянной памяти, после которой планируется перезапуск
  • opcache.validate_timestamps=1
    — включение возможности обнуления вручную или рестартом веб-сервера(регулируется opcache.validate_timestamps)
  • opcache.revalidate_freq=0
    — промежуток, через который будет выполнена проверка изменения временных меток, для поддержания актуальности данных, 0 — постоянная проверка, любое другое значение количество секунд
  • opcache.fast_shutdown=1
    — если параметр включен, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти.
  • opcache.save_comments=1
    — если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода.
  • opcache.load_comments=1
    — если выключено, то комментарии PHPDoc не будут загружаться из общей памяти.
  • opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
    — местоположение списка php файлов, который OPcache должен пропускать. Файл содержит имена файлов, которые не нужно оптимизировать, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются

Более детальную настройку можно выполнить согласно официальной документации по OPcache.

Сравнение производительности популярных CMS при использовании OPcache

Использование OPcache на сервере обеспечит экономию ресурсов и сократит время загрузки страниц сайта, но есть и другие факторы по которым важно использовать данное расширение:

  • Многие поисковые системы отдают предпочтение сайтам, с более быстрой загрузкой;
  • Быстрый отклик сайта сокращает число отказов. Посетители сайта охотнее задерживаются на таких сайтах;
  • Увеличение конверсии, за счет высокой производительности сервера;
  • Сокращение расходом на оборудование (из-за экономии ресурсов сервера).

В работе с различными CMS, мы заметили, что почти с любым сайтом, можно добиться хорошего результата в производительности: Использование памяти и время загрузки популярных CMS сокращается в 2-3 раза.

тестирование производительности различных популярных cms при использовании opcache

А если речь идет о CMS Bitrix, то ее разработчики настоятельно рекомендуют подключение данного расширения и при замерах производительности, тест сразу показывает, подключен у вас OPcache или нет.

Экспериментируйте с настройками Opcache, уменьшая или увеличивая различные параметры, выполните тонкую настройку для своего сайта исходя из ресурсов сервера, тем самым вы добьетесь отличных результатов в производительности. Модуль Opcache также можно использовать в связке NGINX + PHP-FPM.

Linux
Используем OPCache для повышения производительности PHP на веб сервере