Используем 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
На этом установка расширения 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
После сохранения файла php.d перезапустите веб-сервера. В моем случае это apache:
# service httpd restart
Проверьт, что модуль Zend OPcache Engine подключён:
# php -v
Модуль успешно подключен. Рассмотрим опции, которые мы исопльзовали в конфигурационном файле:
-
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 Bitrix, то ее разработчики настоятельно рекомендуют подключение данного расширения и при замерах производительности, тест сразу показывает, подключен у вас OPcache или нет.
Экспериментируйте с настройками Opcache, уменьшая или увеличивая различные параметры, выполните тонкую настройку для своего сайта исходя из ресурсов сервера, тем самым вы добьетесь отличных результатов в производительности. Модуль Opcache также можно использовать в связке NGINX + PHP-FPM.
Linux
Используем OPCache для повышения производительности PHP на веб сервере