- PHP акселераторы на CentOS и VestaCP
- Существующие акселераторы PHP
- Какой кешер выбрать
- Как установить ZendOpCache на CentOS
- Установка ZendOpCache на php 5.4
- Установка ZendOpCache на php 5.3
- Проверим правильность установки ZendOpCache на CentOS
- Оптимальные настройки Zend OPcache
- Перезапуск web-сервера
- Изменение скорости работы сайта после установки акселератора PHP
- Благодарности
- Ускорение PHP | настройка Zend OPcache
- Настройка Zend OPcache
- Описание значений Zend OPcache
- Перезапуск web-сервера
- Изменение скорости работы сайта после установки акселератора PHP
- Обзор zend расширения OPCache для PHP
- Зачем нужен Opcache?
- Почему стоит включить OPCache?
- Как OPCache улучшает производительность на WordPress, Joomla и Drupal?
- Как установка OPCache улучшает работу 1С Bitrix?
- Включение OPCache на UMI CMS
- Включение и настройка OPCache на хостинге sweb
- «Битрикс24». Играемся с настройками и оптимизируем проект
- Запрос клиента
- Решение
- Вывод
- Инструкция по настройке кеширования
- Использование кеширования в оперативной памяти
- PHP приложения
- Демон memcached
- Настройка Битрикса
- Пользовательские комментарии
- Видео
PHP акселераторы на CentOS и VestaCP
Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress.
Акселератор PHP — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.
Информация из Википедии
В данной статье расскажу как установить PHP акселератор на CentOS если вы используете панель управления хостингом VestaCP.
Существующие акселераторы PHP
Для PHP версий 5.3, 5.4 актуальны следующие акселераторы:
Если вы используете PHP 5.5, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.
В сети полно тестов и сравнений различных акселераторов. Но в данной статье я не буду их приводить.
Какой кешер выбрать
Перелапатил интернет и понял, что в зависимости от версии PHP гуру рекомендуют следующее:
Но я везде использую ZendOpCache вне зависимости от версии PHP. Мой выбор основан на том, что он стоит по-умолчанию на PHP v5.5. А значит лучше других должен знать как оптимизировать работу PHP.
Как установить ZendOpCache на CentOS
Нельзя использовать несколько акселераторов одновременно. ZendOpCache конфликтует с другими акселераторами и/или наоборот, так что остальные акселераторы должны быть отключены.
VestaCP на CentOS по-умолчанию ставит (ставила) APC, удалите его если вы решили установить ZendOpCache на CentOS.
Установка ZendOpCache на php 5.4
Установка ZendOpCache на php 5.3
Проверим правильность установки ZendOpCache на CentOS
Оптимальные настройки Zend OPcache
Проверьте свой файл конфигурации /etc/php.d/opcache.ini
По информации в сети нижеследующие настройки являются самыми оптимальными.
opcache.memory_consumption задает использование памяти для расширения
opcache.interned_strings_buffer задает объем памяти для хранения интернированых строк, в мегабайтах
opcache.max_accelerated_files – максимальное количество скриптов в памяти
opcache.revalidate_freq — это валидация кэша в секундах, в интернете все рекомендуют значение 60, я же использую 2, но иногда рекомендуют ставить 0 (ноль), то есть постоянно проверять на изменения. К примеру в Joomla OPcache кеширует все файлы и будет отдавать кэш после сохранения файлов еще то время, которое в этой строке. То есть вы сохранили файл, но все равно в течении указанного времени будете видеть старую копию из кеша. Поэтому не жалуйтесь, что файлы не сохраняются, подождите выставленное вами время.
opcache.fast_shutdown определяет включено или выключено быстрое завершение последовательности ускоренного, кода, дает возможность использовать Zend Engine Memory Management
opcache.enable_cli включает OPcache в CLI-версии PHP.
Перезапуск web-сервера
Чтобы изменения вступили в силу нужно перезапустить вэбсервер:
Изменение скорости работы сайта после установки акселератора PHP
Блог на WordPress работал сервере с PHP 5.3 без каких-либо акселераторов. Страница генерировалась за 0,37 сек., потребление памяти составляло 37 МБ.
После установки акселератора Zend OPcache скорость генерации страницы снизилась до 0,22 сек, потребление памяти при этом составило 11 МБ.
Комментарии излишни. Использование PHP акселератора положительно сказывается на скорости работы сайта и снижает потребление памяти.
Благодарности
При написании статьи были использованы следующие источники:
Ускорение PHP | настройка Zend OPcache
Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress, Bitrix или MODx.
Zend OPcache — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.
В данной статье расскажу как установить Zend OPcache на Ubuntu Server 20.04 LTS
Если вы используете PHP 5.5 и выше, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.
Проверяем установлен ли ZendOpCache на вашем сервере, вот так:
Вывод должен быть примерно такой:
Настройка Zend OPcache
В интернете множество статей в которых описывается оптимальная настройка Zend OPcache. Почитав их, я решил объединить их в своей статье и найти золотую середину. На моем сервере установлен php 7.4 + nginx в связке с Apache. И так, открываем файл конфигурации php. :
Находим следующие строки и выставляем значения как у меня (хотя можете поэкспериментировать)
Описание значений Zend OPcache
opcache.enable — включаем наш Zend OPcache.
opcache.enable_cli — включает OPcache в CLI-версии PHP.
opcache.memory_consumption — задает использование памяти для расширения (если ОЗУ позволяет, то можно увеличить значение).
opcache.interned_strings_buffer — задает объем памяти для хранения интернированных строк, в мегабайтах.
opcache.max_accelerated_files – максимальное количество скриптов в памяти (тут тоже можно увеличить, если памяти хватает).
opcache.revalidate_freq — это валидация кэша в секундах, в интернете все рекомендуют значение 60, я же использую 2, но иногда рекомендуют ставить 0 (ноль), то есть постоянно проверять на изменения. К примеру в Joomla OPcache кэширует все файлы и будет отдавать кэш после сохранения файлов еще то время, которое в этой строке. То есть вы сохранили файл, но все равно в течении указанного времени будете видеть старую копию из кеша. Поэтому не жалуйтесь, что файлы не сохраняются, подождите выставленное вами время.
opcache.fast_shutdown — определяет включено или выключено быстрое завершение последовательности ускоренного, кода, дает возможность использовать Zend Engine Memory Management
Перезапуск web-сервера
Чтобы изменения вступили в силу нужно перезапустить вэб-сервер:
Изменение скорости работы сайта после установки акселератора PHP
Блог на WordPress, до настройке Zend OPcache, страница генерировалась за 0,55 сек., потребление памяти составляло 51 МБ.
После установки акселератора Zend OPcache скорость генерации страницы снизилась до 0,18 сек, потребление памяти при этом составило 17 МБ.
Комментарии излишни. Использование PHP акселератора положительно сказывается на скорости работы сайта и снижает потребление оперативной памяти.
Обзор zend расширения OPCache для PHP
Легкий способ увеличить скорость сайта
Зачем нужен Opcache?
OPCache появился в 2013 году и с того момента стал оптимальным и рекомендуемым разработчиками PHP решением для кэширования опкодов. В классическом варианте алгоритм отдачи контента состоит из обращения к файлу, последующего открытия файла для чтения, после чего происходит компиляция и в конечном итоге отдача контента клиенту.
При включении OPCache компиляцию из процесса можно исключить (кроме первичного обращения к файлу), это позволит увеличить быстродействие кода, т.к. при обработке любого скрипта компиляция является наиболее ресурсозатратным процессом.
Сегодня развитие расширения PHP OPCache производится только в пределах версии PHP 7.
Почему стоит включить OPCache?
Помимо обеспечения экономии ресурсов сервера и сокращения времени загрузки страниц сайта, включение OPCache дает ряд других значимых преимуществ:
Как OPCache улучшает производительность на WordPress, Joomla и Drupal?
В ходе проведения исследования мы установили, что на среднестатистическом сайте использование OPCache улучшает скорость загрузки в несколько раз, при этом количество используемой памяти сокращается в 2-4 раза. Таким образом, простое включение расширения OPCache наглядно демонстрирует увеличение производительности на популярных CMS.
Как установка OPCache улучшает работу 1С Bitrix?
Ниже представлен сайт клиента, который длительное время не мог решить проблему с оптимизацией конфигурации своей системы.
Рассмотрим, какие показатели были у него до включения OPCache Битрикс.
Благодаря несложной инструкции включения расширения zend OPCache PHP, владельцу сайта удалось повысить оценку конфигурации системы и увеличить среднее время отклика в 6 раз. Еще один рекомендуемый инструмент улучшения производительности для владельцев проектов на Bitrix.
Включение OPCache на UMI CMS
Рассмотрим, как включенный OPCache влияет на производительность umi cms.
В первом случае OPCache отключен и система показывает среднюю производительность.
После включения OPCache производительность системы увеличилась почти вдвое.
Включение и настройка OPCache на хостинге sweb
Установка и настройка OPCache не требует особых технических знаний.
На тарифах «стандартного виртуального хостинга» для включения OPCache перейдите в раздел «Настройка сайта» в панели управления, и во вкладке «Общие» выберите «Apache 2.2 + PHP 7.1 opcache».
Важно: Перед выбором обязательно убедитесь в том, что ваш сайт совместим с этой версией PHP.
На тарифах «реактивного хостинга» OPCache включен начиная с версии PHP 5.5.
Топ-6 сервисов для проверки кроссбраузерности сайта
«Битрикс24». Играемся с настройками и оптимизируем проект
В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU.
80 Гб БД на выделенном сервере с BitrixVM.
До изменения настроек показатели были следующими:
Стандартный тест производительности в панели администратора «Битрикс»
Из всех параметров стоит обратить особое внимание на работу с MySQL и «Конфигурацию PHP». Именно эти показатели особенно важны для нас, так как они косвенно отражают уровень производительности проекта.
Запрос клиента
Наш клиент хотел не только перенести проект на новый выделенный сервер, но и улучшить параметры производительности. Например, среди сложностей можно назвать отсутствие возможности делать дампы базы данных на исходном сервере, а также медленную работа самого портала.
Решение
Настройки MySQL — первое, с чем мы начинаем работать.
Заменим стандартные значения BitrixVM на:
Следующий шаг — изменим режим питания CPU, так как «Битрикс» любит большую частоту процессора.
В зависимости от количества ядер меняем в каждом
файле /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave на performance.
Далее проверим результат:
Мы видим, что больше всего изменилась работа с MySQL: параметры “запись” и “изменение” выросли почти в 3 раза; показатель “чтение” вырос в 5 раз. Это значит, что при обращении сайта к базе данных этот тип операции будет выполняться в несколько раз быстрее. Как следствие, вырастет и общая производительность сайта.
Из-за изменения режима питания CPU (это возможно, так как используется выделенный сервер) увеличилось количество операций на CPU.
Теперь необходимо отредактировать настройки для OPcache.
В файле /etc/php.d/10-opcache.ini заменяем его исходное значение на:
Примечание: Тест «Битрикс» сообщит вам, что параметр opcache.revalidate_freq должен иметь значение 0 а не 1, но с указанным нами он будет работать лучше.
Сам параметр opcache.revalidate_freq отвечает за проверку кеша: при значении 0 она выполняется каждый раз при запуске скрипта, а при значении 1 — раз в секунду.
После изменения настроек проверяем результат:
Из таблицы следует, что показатель работы с MySQL еще немного вырос. В то же время операции на CPU и общая производительность «Битрикс» увеличились значительно за счет изменения настроек PHP и кеширования скриптов.
Вывод
Благодаря таким несложным изменениям в настройках, мы смогли увеличить производительность проекта в 3 раза, а взаимодействие с БД — от 3 до 5 раз (на основании общей оценки теста «Битрикс»). Работой проекта на новом сервере наш клиент полностью доволен. We did it!
В данном способе оптимизации мы сделали акцент на основных моментах, с которыми взаимодействует «Битрикс», а также на сам тест. Клиенты часто обращают внимание именно на него.
Среди других способов повышения производительности «Битрикс» можно назвать установку и настройку кеширующего сервиса (например, Redis). Показатель производительности в CMS может упасть, но общая работа сайта должна быть лучше. Кроме того, можно использовать php-fpm, но в нашем случае переделывать ОС, изначально настроенную под «Битрикс», было бы нерационально.
Также можно еще поиграться с настройками MySQL. Они индивидуальны для каждого проекта и конфигурации, поэтому единого идеального рецепта не существует. Будет интересно узнать ваши лайфхаки по оптимизации проектов в «Битрикс». Делитесь мнением в комментариях.
Инструкция по настройке кеширования
Использование кеширования в оперативной памяти
В версии 8.5.1 главного модуля появилась поддержка кеширования не только на диск, но и в разделяемую память.
Акселераторы PHP поддерживают API работы с разделяемой памятью. Это значит, что все процессы веб-сервера могут читать и писать в общее адресное пространство. Это позволяет организовать совместно используемый синхронный кеш.
Хотя данные приложения, кешированные в файл, кешируются на уровне файловой системы, бывают ситуации (например: резервное копирование) когда этот кеш вытесняется и становится не эффективным для использования.
PHP приложения
Демон memcached
Кроме акселераторов, схожим, но гораздо более богатым функционалом обладает демон memcached.
Это отдельный процесс использующий для коммуникаций протокол TCP/IP, который может поддерживать распределенный, разделяемый, синхронный кеш. К серверу, на котором запущен memcached, можно подключить более одного веб-сервера. Использование memcached решает проблемы кеша акселераторов, но на первое место выходит штраф производительности из-за транспорта протокола.
Пример работы с memcached на Ubuntu. Установка:
Настройки демона хорошо документированы и расположены файле /etc/memcached.conf
Для PHP имеется три расширения для работы с сервером memcached. На данный момент «1С-Битрикс: Управление сайтом» поддерживает расширение memcache. При этом при использовании memcache к нему можно подключиться через unixsocket:
Настройка Битрикса
Управление кешем реализуется через константы определяемые в файле dbconn.php (В версии ядра выше 14.0 настройки производятся в других файлах).
Пример:
Пример:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Цитата |
---|
Недостаток 1: использует общую для скриптов и кеша память. Недостаток 2: при кешировании требуется сериализация данных. |
Цитата |
---|
BX_CACHE_SID Обязательно определять, если на одном сервере запущено более одного экземпляра «1С-Битрикс: Управление сайтом». |
Следует также учитывать, что при использовании FastCGI у каждого процесса PHP будет свой кэш APC/eAccelerator, что приведет одновременно к многократному кэшированию одних и тех же данных и «странному» поведению продукта.
Проблема может быть решена передачей управления потомками самому PHP (через опцию PHP_FCGI_CHILDREN), что не рекомендуется, так как сам PHP имеет гораздо меньше возможностей по управлению потомками. Также использование PHP_FCGI_CHILDREN в mod_fcgid (но не в mod_fastcgi) может значительно ограничить производительность, т.к. mod_fcgid одновременно передает только один запрос процессу PHP, независимо от количества его потомков.
Таким образом, при использовании FastCGI разумным выбором будут изначально разделяемые кэши — в файлах или memcached.
Видео
Enable modul Zend Opcache extension in Xampp PHP 7
40 - Уроки PHP. Memcache кеширование в PHP
IIS 8 with PHP 5.6: WinCache VS Zend Op Cache
Z-Ray for OPcache
Zend Server Page Caching
Tutoriel PHP : OPcache
PHP APC overview #44
PHP OPCache, Realpath Cache and Preloading - Jachim Coudenys - PHP UK 2020
XAMPP Tutorial 3 - How to install the APC extension
Настройка Xdebug в NetBeans с использованием Zend Framework