Меню Рубрики

Установка акселератора ускорителя php

PHP акселераторы на CentOS и VestaCP

Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress.

Акселератор PHP — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.
Информация из Википедии

В данной статье расскажу как установить PHP акселератор на CentOS если вы используете панель управления хостингом VestaCP.

Существующие акселераторы PHP

Для PHP версий 5.3, 5.4 актуальны следующие акселераторы:

  • APC — Alternative PHP Cache. Бесплатный и открытый opcode кэшер для PHP. Поддерживает PHP4 и PHP5, включая 5.3 и 5.4.
  • eAccelerator. Свободный открытый проект, выполняющий роли акселератора, оптимизатора и распаковщика. Поддерживает PHP4 и PHP5, включая 5.4
  • PhpExpress. Бесплатный ускоритель обработки php-скриптов на веб-сервере. Поддерживает PHP4 и PHP5, включая 5.3
  • XCache. Бесплатный. Поддерживает функции оптимизации скриптов, кэширования байткода. Поддерживает PHP4 и PHP5, включая 5.6
  • Zend OPcache. Обеспечивает более быстрое выполнение PHP кода операции через кэширование и оптимизации. Улучшает PHP производительность, сохраняя скомпилированные сценариев байт-кода в разделяемой памяти. Zend OPcache включен в PHP 5.5 по умолчанию. Как расширение PECL поддерживает версии 5.2, 5.3 и 5.4.

Если вы используете PHP 5.5, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.
В сети полно тестов и сравнений различных акселераторов. Но в данной статье я не буду их приводить.

Какой кешер выбрать

Перелапатил интернет и понял, что в зависимости от версии PHP гуру рекомендуют следующее:

  • 5.3 — apc
  • 5.4 — ZendOpCache
  • 5.5 — ZendOpCache(по-умолчанию)

Но я везде использую 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

Тот, кто делает сайты на Joomla!, знает на личном опыте, что стоит установить на этот движок несколько компонентов и модулей, как сайт начинает заметно медленней работать. Конечно же, можно включить в админке кеширование, но и это не особо ускоряет работу сайта.

Читайте также:  Установка reptilicus на iphone

Давайте разберёмся, почему это происходит и как исправить такую ситуацию в лучшую сторону. Joomla!, как и большинство других движков, написана на скриптовом языке программирования PHP. Это значит, что на PHP написаны сценарии (скрипты), в которых описаны последовательности операций для получения какого-либо результата. В нашем случае там прописано, что и как должно работать на сайте. Рассмотрим подробнее, как это работает.

Пользователь заходит на Ваш сайт — в этот момент на сервер из его браузера идёт запрос к странице, которую он запросил. Сервер принимает этот запрос и, если в коде страницы есть PHP код, передаёт этот код в интерпретатор PHP. Задача интерпретатора — принять PHP код и обработать его. Проще говоря, выполнить те последовательности действий, которые описаны в PHP коде. После обработки кода интерпретатор отдаёт результат серверу, а сервер отдаёт этот результат браузеру посетителя в виде HTML кода. При этом каждый раз перед тем, как интерпретатор сможет выполнить PHP скрипт, происходит компиляция этого PHP скрипта в байткод, который и обрабатывается. При этом компиляция кода отнимает некоторое количество ресурсов сервера, а если сайт состоит из большого количества PHP скриптов (в нашем случае это Joomla!), то это создаёт ощутимую нагрузку на сервер.

Напрашивается вывод, что выгоднее было бы сохранять байткод в оперативный памяти. И действительно, для снижения нагрузки от постоянной компиляции одного и того же кода применяют акселераторы PHP. Все они работают по одному принципу: сохраняют в оперативной памяти (либо на диске) уже скомпилированный код. Применение акселератора позволяет ускорить выполнение PHP в несколько раз, а значит, и скорость загрузки страниц сайта тоже возрастёт.

Я покажу установку и базовую настройку одного из таких ускорителей, а именно APC. Кстати я даже где-то читал, что этот акселератор советуют разработчики Joomla! Итак, установим APC на домашний сервер. Для этого выполним в консоли команду

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

Это количество выделенной под кеш памяти в мегабайтах. После сохранения изменений необходимо перезапустить apache:

Теперь давайте проверим работу акселератора. В APC есть полезная опция, позволяющая визуально наблюдать в браузере использование кеша этим акселератором и видеть все его настройки. Для этого нужно закачать в корень сайта файл apc.php (этот файл можно найти в папке, в которой находится apc после установки, либо скачать по ссылке ниже) и обратиться к нему, дописав в браузере к домену сайта имя файла http://ваш-домен.ru/apc.php.

Вы увидите полную информацию об использовании кеша в наглядном виде (так же, как на этом скриншоте).

Это позволяет отлаживать режимы работы акселератора, подстраивать его под свой проект. После установки на сервер акселератора в Joomla! можно использовать APC в качестве обработчика кеширования. Для этого в общих настройках выберите Alternative PHP Cache.

Не рекомендую включать акселератор для обработчика сессий, иначе невозможно будет редактировать материалы и в админку тоже уже не попадёте. Хотя настроек у APC очень много, но думаю, для первого знакомства с ним достаточно этой информации. В дальнейшем расскажу о более тонкой настройке.

Только зарегистрированные пользователи могут оставлять комментарии.

источник

Обзор PHP-акселераторов с инструкциями по установке

eAccelerator
eAccelerator — это свободный opensource-проект, выполняющий роли акселератора, оптимизатора и распаковщика. Также встроены функции динамического кэширования контента. eAccelerator повышает производительность работы PHP-скриптов за счет кэширования скомпилированного байт-кода, таким образом издержки на процесс компиляции ликвидируются. Также он оптимизирует скрипты для ускорения времени их исполнения. eAccelerator обычно снижает нагрузку на сервер и увеличивает скорость работы вашего кода в 1-10 раз.

Читайте также:  Установка вентиляции в закрытом помещении

Для сборки eAccelerator вам необходимо установить пакет php4-dev:

Или, если вы используете php5:

Загрузите архив с исходными кодами eAccelerator:

#tar jxvf eaccelerator-0.9.5.tar.bz2
#cd eaccelerator-0.9.5

Запустите phpize для создания config-файлов, необходимых для сборки:

#phpize
#./configure –enable-eaccelerator=shared –with-php-config=/usr/bin/php-config
#make
#make install

Теперь необходимо отредактировать файл /etc/php4/apache2/php.ini для пользователей php4 и добавить в него следующие параметры для подключения расширения:

extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Если вы хотите установить его как расширение Zend, то необходимо отредактировать /etc/php4/apache2/php.ini следующим образом:

zend_extension=”/usr/lib/php4/eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Если вы используете thread-safe сборку PHP, то необходимо использовать “zend_extension_ts” вместо “zend_extension”.

Если вы используете php5, то редактируйте файл /etc/php5/apache2/php.ini

Создание cache-директории
Последний важный шаг в настройке акселератора — это создание директории для кэша, имя которой мы задавали в конфиге. Значение по умолчанию — /tmp/eaccelerator, потому что права на запись в папку /tmp обычно есть у всех пользователей

Не очень хорошим решением будет оставлять права на запись для всех пользователей. Более безопасным будет сменить владельца директории eaccelerator на пользователя, от имени которого запущен PHP (в большинстве случаев это web-сервер. Например apache или lighttpd) и установить на нее права 0644

#mkdir /tmp/eaccelerator
chown nobody:nobody /tmp/eaccelerator (укажите пользователя PHP)
#chmod 0644 /tmp/eaccelerator

Перезапустите web-сервер. На этом настройка eAccelerator закончена

Проверьте, все ли корректно поставилось. Создайте файл test.php со следующим содержанием:

Если вы видите информацию о eAccelerator, то все установлено корректно.
Также вы можете использовать следующую команду:

eAccelerator сохраняет скомпилированый PHP-код сначала в общей памяти, затем на диске, все время поддерживая размер занятой памяти оптимальным для производительной работы приложений.

Alternative PHP Cache (APC)
APC — это открытый и свободный оптимизатор кэша для php. Он был разработан для обеспечения свободной, открытой и надежной базы кэширования и оптимизации промежуточного кода PHP.

# apt-get install apache2-threaded-dev php5-dev php5-pear make gcc g++

источник

WordPress.org

Русский

Какой акселератор выбрать?

Доступны у провайдера
Zend OPCache
APC
APCu
APCu-bc
XCache
eAccelerator

  • Тема изменена 1 год назад пользователем selftrips ru .

акселерат — живое существо с ускорением физического развития.

«PHP акселератор» или «Кеш опкода», суть в том, что он сохраняет скомпилированный код PHP, тем самым ускоряя выполнение скриптов в 3-4 раза, в PHP7+ также используется для кеширования массивов статических строк

Zend Opcache — рекомендуется, при правильной конфигурации, особенно для PHP7+

APC — устарел, достаточно глючный, не рекомендуется

APCu — «огрызок» от APC, можно использовать для кеша объектов WordPress
https://ru.wordpress.org/plugins/apcu/ , можно вместе с OpCache

APCu-bc — плагин совместимости с APCu, можно загрузить вместе с APCu

XCache — хороший OpCache + Объектный кеш, не работает с PHP7+
Не рекомендуется по этой причине. Лучше использовать PHP7+

eAccelerator — верните мумию в саркофаг!

Мне недоступны никакие конфигурации, только можно выбрать из этого списка. Надеяться на то что пров все правильно сконфигурил?
по тестам именно Zend OPCache дает наименьшее время загрузки страниц и использованной памяти.
Нужно ли что-то уточнить у прова на счет конфигурации, чтобы убедиться что все настроено ок?
стоит php 5.6. Стоит ли перейти на 7.0, 7.1, 7,2, 7.3? Какой из этих вариантов?

  • Ответ изменён 1 год назад пользователем selftrips ru .

просто включите и посмотрите phpinfo()
секция Zend OpCache

Cache hits будет расти со временем, это хорошо
Cache misses — промахи кеша, если кеш эффективен, это значение будет около 1000 и расти не будет
Used memory использованная память
Free memory свободная память, WP с плагинами и админкой занимают обычно около 40 Mb в кеше
OOM restarts — в идеале 0

стоит php 5.6. Стоит ли перейти на 7.0, 7.1, 7,2, 7.3? Какой из этих вариантов?

https://ru.wordpress.org/support/update-php/
читайте
Лучший и относительно безопасный вариант на настоящее время — 7.2.16

Лучший и относительно безопасный вариант на настоящее время — 7.2.16

у меня есть только возможность 7.2 без дальнейших вариаций

просто включите и посмотрите phpinfo()

источник

Читайте также:  Установка кондиционера на мкд согласие

Тема: Акселератор PHP

Опции темы
Поиск по теме

Прошу прощения, не указал, у меня Debian 6.

1. Eaccelerator пока не пробовал ставить, он только из исходников собирается, в панели установки нет.
2. Nginx стоит.
3. Не совсем понятно, для чего тогда так хорошо ставятся и работают ускорители на режиме CGI (типа работают). если бы не дотошность, я бы даже не узнал, что xcache ничего не кеширует.
4. Memcache & Memcached ставить бесполезно? (пробовал, становится, но не понятно, работает или нет)

Последний раз редактировалось virtualbrest; 14.01.2013 в 01:12 .

ls,
1. полностью не согласен.
eaccelerator ставить при FastCGI это глупость большая
XCache дает значительно больше прирост по скорости и соответственно снижению нагрузки. Кто вам сказал такую чушь что связка xcache+fastcgi «неэффективна»??
Если проводить нагрузочные тесты то xcache в 2.5 раза эффективнее eaccelerator при FastCGI!

И при xcache+fastcgi админка у каждого пользователя сервера своя. Общих данных нету.

virtualbrest, Memcache & Memcache стоит ставить, так как некоторые cms используют их для кэширования. Естественно кэш на XCache существенно быстрее чем на Memcache, но во многих cms существует только два выбора: или с Memcache или без ничего совсем. Так что выбор не велик.

По поводу безопасности в ITK+XCache, не включайте кэш переменных.

Последний раз редактировалось WebGraf; 14.01.2013 в 07:53 .

Так погодите, мы же пришли в к выводу, что FastCGI + Xcache просто не работает, в админке пусто, у меня один сайт, я сделал 2 его копии, одна из них работает в режиме FastCGI (основная), вторая — как модуль. Так вот тот, что FastCGI — в админке xcache пусто, а в том что как модуль — все ок, видно как кеш наполняется. В обоих случаях в phpinfo() виден xcache.

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

Для XCache и Eaccelerator не нужно ничего в скриптах. Кэширование происходит и без этого.
Но у первого есть еще кэш переменных — вот для этого нужна поддержка скриптом, но используется крайне редко.

Пустой кэш означает только одно — неверная конфигурация php/xcache

Около двух сотен настроенных мною серверов подтверждают обратное.

Вот вам скриншот админки, а не говорите что «не работает», «не эффективно».

p.s. на хиты не обращайте внимание, этот сайт неактивен почти.

; configuration for php Xcache module

[ xcache — common ]
zend_extension = / usr / lib / php5 / 20090626 / xcache . so

[ xcache ]
xcache . shm_scheme = «mmap»
xcache . size = 512M
xcache . count = 4
xcache . slots = 16K
xcache . ttl = 0
xcache . gc_interval = 0

xcache . var_size = 128M
xcache . var_count = 4
xcache . var_slots = 16K
; default ttl
xcache . var_ttl = 0
xcache . var_maxttl = 0
xcache . var_gc_interval = 300

xcache . test = On
; N / A for / dev / zero
xcache . readonly_protection = Off
xcache . mmap_path = «/tmp/xcache»

xcache . cacher = On
xcache . stat = On
xcache . optimizer = Off

[ xcache . coverager ]
xcache . coverager = Off
xcache . coveragedump_directory = «»

В конфиге все по умолчанию, за исключением размера кеша конечно, если вы подскажете, как все же запустить Xcache на FastCGI буду вам благодарен. Но он упорно не хочет работать, я ведь не умничаю, а пытаюсь решить проблемы. У меня админка пуста, там есть только четыре скрпита самой админки xcache. Косвенно это может свидетельствовать, что он все же работает, но почему тогда сайт не подхватывает? Тогда как в режиме модуля все работает ок.

источник

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

Adblock
detector