eAccelerator – ускорение работы php приложений.

Что такое eAccelerator?
eAccelerator это свободно-распространяемый PHP акселератор, оптимайзер и средство для кеширования динамического контента. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз.
В результате моих экспериментов, было выяснено, что скорость выдачи контента, например, для сайтов на Drupal увеличивается до 30 раз!!!
В этой маленькой заметке опишу процесс установки eAccelerator на linux систему.
Итак приступим.
Домашняя страница проекта http://eaccelerator.net/
Выбираем последнюю версию. На данный момент последней версией является 0.9.5.2. Скачиваем и распаковываем ее.

cd /usr/local/src
wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
bzip2 -d eaccelerator-0.9.5.2.tar.bz2
tar xvf eaccelerator-0.9.5.2.tar
cd eaccelerator-0.9.5.2

Далее необходимо проверить есть ли в нашей системе необходимые для создания модуля php пакеты.
Нам нужны:

  • apache >= 1.3,
  • mod_php >= 4.1,
  • autoconf,
  • automake,
  • libtool,
  • m4

Если производилась установка веб сервера, и php из пакетов то нам необходимо установить еще и модуль php-devel. Именно в нем находится необходимая нам программа phpize, с помощью которой и происходит компиляция модулей для php.

yum install php-devel

Далее выясняем местоположение файла phpize с помощью команды:

whereis phpize

И смотрим путь до файла. Обычно это /usr/bin/phpize.
В таком случае для компиляции модуля выполняем следующие действия:

export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure \
--enable-eaccelerator=shared \
--with-php-config=$PHP_PREFIX/bin/php-config
make
make install

Далее находим файл php.ini (обычно он находится в /etc/php.ini) и прописываем в нем следующие строки:

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"

Это для варианта использования eAccelerator как расширения php. Я использую такой подход. Есть еще вариант использования eAccelerator как расширения Zend. В таком случае прописать нужно следующие строки:

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"

Далее настал черед создания каталога, котрый будет использовать eaccelerator для хранения своего кеша:

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

Далее перезапускаем наш апач:

service httpd restart

и радуемся ускорению.
Ну в общем и все. Как всегда, жду ваших замечаний и предложений.

P.S. Если кому-нибудь нужны мои заметки, пожалуйста берите. Только оставьте ссылку на http://dedicatesupport.com

Рейтинг@Mail.ru

34 Comments


  1. Неужели и правда ускоряет?!
    Я думал зендить проще.

    Quote | Posted December 13, 2007, 5:29 pm

  2. Еще как ускоряет. :-)

    Quote | Posted December 13, 2007, 5:48 pm

  3. [...] Что такое eAccelerator? – eAccelerator это свободно-распространяемый PHP акселератор, оптимайзер и средство для кеширования динамического контента. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз. Дальше [...]

    Quote | Posted December 14, 2007, 1:04 am

  4. Зачем такие сложности.

    CentOS4

    #cd /usr/src && wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2 && tar xvjf eaccelerator-0.9.5.2.tar.bz2 && cd eaccelerator-0.9.5.2 && phpize && ./configure && make && make install && mkdir /tmp/eaccelerator && chmod 777 /tmp/eaccelerator

    #php -i |grep php.ini

    vi [path to php.ini]

    zend_extension=”/usr/lib/php/extensions/no-debug-non-zts-20060613/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″

    /usr/lib/php/extensions/no-debug-non-zts-20060613/ – путь до либов php.

    Quote | Posted December 14, 2007, 1:54 am

  5. А где Вы, уважаемый daiver, в моей заметке увидели сложности? :-)

    Quote | Posted December 14, 2007, 9:27 am

  6. 10x ;) nice how to :)

    Quote | Posted December 14, 2007, 11:38 am

  7. Здорово. Поднял производительность на 20% примерно. Спасибо за статью.

    Quote | Posted December 14, 2007, 12:13 pm

  8. Пользуйтесь на здоровье! :-)

    Quote | Posted December 14, 2007, 12:28 pm

  9. лол =)
    # su -
    # wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
    # wget http://remi.collet.free.fr/rpms/el5.i386/remi-release-5-3.el5.remi.noarch.rpm rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
    # yum install php-eaccelerator
    я так на свою 64ку ставил :)

    Quote | Posted December 17, 2007, 1:36 pm

  10. брр в смысле для 64 тока
    # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-2.noarch.rpm
    # wget http://remi.collet.free.fr/rpms/el5.x86_64/remi-release-5-3.el5.remi.noarch.rpm
    # rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

    Quote | Posted December 17, 2007, 1:40 pm

  11. Тоже верно. Спасибо за ценный коммент.

    Quote | Posted December 17, 2007, 2:09 pm

  12. А вам спасибо за статью =)

    Quote | Posted December 17, 2007, 4:45 pm

  13. Для Debian есть собранный в моем репозитории.

    Quote | Posted December 17, 2007, 6:03 pm

  14. А как со стабильностью? Раньше, при повышении нагрузки, акселератор частенько намертво вешал апач. Как с этим сейчас?

    Quote | Posted January 7, 2008, 6:57 pm

  15. Да пишут что все хорошо. У меня не виснет. Хотя я его не испытывал на высоких нагрузках.

    Quote | Posted January 7, 2008, 10:08 pm

  16. Самое главное не забыть добавить
    eaccelerator.debug=”0″
    А то будет как у меня… ;)

    Quote | Posted February 18, 2008, 2:26 pm

  17. Спасибо вам за статью. Скопирую к себе в блог – чтобы не терялась. Линк канечно же воткну.

    Quote | Posted March 31, 2008, 4:08 pm

  18. eAccelerator работает только под апачем 1,3 или работает в связке с php5 + Apache 2.2.8 нормально? никто не пробовал?

    Quote | Posted April 13, 2008, 9:10 pm

  19. Да, Все нормально.
    Связка php 5.2.5 + Apache 2.2.8 +eAccelerator работает отлично ) Спасибо автору за статью

    Quote | Posted May 26, 2008, 8:17 pm

  20. Сейчас поставил его на оба свои сервера с хостингом… посомтрим что получится)

    Quote | Posted June 28, 2008, 9:03 pm

  21. проводил сравнительные тесты различных акселераторов.. вот например xCache и eAccelerator http://itblog.su/xcache-vs-eaccelerator.html

    делал ещё общирный и более обьективный по всем поддерживаемым разработкам, данные не снимал.. вобщем итог таков что АРС рулит.

    Quote | Posted August 24, 2008, 1:21 am

  22. У меня при выполнении команды “$PHP_PREFIX/bin/phpize” выводит вот такую надпись “/user/bin/phpize: line 57: aclocal: command not found” Хотя я выполнил все по инструкции! phpize находиться по умолчанию в /usr/bin/phpize.

    Quote | Posted October 23, 2008, 9:37 am

  23. В Дебиане все попроще как-то будет.

    # apt-get install php5-xcache или # apt-get install php-apc
    # /etc/init.d/lighttpd restart

    Все :)
    Правда здесь юзаются XCache или APC, но в среднем все это одно и то же.

    Quote | Posted November 6, 2008, 5:09 am

  24. А за фигом вам всем Apache сдался NGINX+Php-Fpm+Eaccelerator = Perfect server. Ещё научиться как заставить memcached вытягивать то, чего он туда не ложил и получится ваще High Speed

    Проверьте сайт http://vkimo.org , memcached пока ещё едва дышит, но научим (ся)

    Quote | Posted November 6, 2008, 9:49 am

  25. А как узнать установился этот eAccelerator или нет. Я делал все по инструкции, но все равно вроде бы ошибки выскакивали. В списке модулей его не нашел (панель Plesk). Относительно ускорения пока не заметил, но может он и не установился.

    Как узнать это?

    П.С. Спасибо за столь подробную инструкцию по установки модуля, подойдет даже таким ламерам как я, которые в линуксе 0.

    Quote | Posted December 18, 2008, 7:07 pm

  26. Посмотреть можно через PHP, создав файл с phpinfo();, на этой странице должен быть блок с eAccelerator

    Еще можно посмотреть появились ли файлы в /tmp/eaccelerator
    Спасибо автору!

    Quote | Posted February 27, 2009, 1:51 pm

  27. у меня вопрос к автору

    php -v
    PHP Warning: PHP Startup: Unable to load dynamic library ‘.//usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so’ – .//usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so: cannot open shared object file: No such file or directory in Unknown on line 0
    PHP 5.2.9 (cli) (built: Mar 6 2009 04:17:41)
    Copyright (c) 1997-2009 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

    что это может быть, пути все прописаны верно

    Quote | Posted March 23, 2009, 9:42 pm

  28. Добрый день! Спасибо за статью, но у меня не выходит поставить на CentOS5.2 php5.2.9 Apache2.2.8
    все прекрашается на стадии yum install php-devel с ошибкой и что с ней делать, ума не приложу, а акселератор ох как нужен -)
    Error: Missing Dependency: php = 5.1.6-20.el5_2.1 is needed by package php-devel

    подскажите знающие люди, как быть?

    Quote | Posted April 6, 2009, 9:44 am

  29. >Val says:

    >А за фигом вам всем Apache сдался NGINX+Php-Fpm+Eaccelerator = Perfect server. Ещё научиться как заставить memcached вытягивать >то, чего он туда не ложил и получится ваще High Speed

    >Проверьте сайт http://vkimo.org , memcached пока ещё едва дышит, но научим (ся)

    Вы не правы. Сошлюсь на:

    http://dklab.ru/chicken/nablas/49.html
    а также на мнение Тутубалина в интервью “После Спамтеста я зауважал Microsoft”, где он не считает необходимы так оголтело отказываться от Апача.

    Уже не говоря о том что для сложной системы (скажем Gallery2, Drupal’овские модуля типа Imagecache) задолбаетесь настраивать правила rewrite для nginx

    Quote | Posted May 15, 2009, 1:16 pm

  30. > Проверьте сайт http://vkimo.org , memcached пока ещё едва дышит, но научим (ся)

    Подобные сайты не шибко и нуждаются в ускорении.
    Посещаемость то какая?

    Quote | Posted May 15, 2009, 1:18 pm

  31. > lumb says:

    >Добрый день! Спасибо за статью, но у меня не выходит поставить на CentOS5.2 php5.2.9 Apache2.2.8
    >все прекрашается на стадии yum install php-devel с ошибкой и что с ней делать, ума не приложу, а акселератор ох как нужен -)
    >Error: Missing Dependency: php = 5.1.6-20.el5_2.1 is needed by package php-devel

    >подскажите знающие люди, как быть?

    Воспользоваться другим акселератором – их много

    eAccelerator, APC, XCache и пр….

    Quote | Posted May 15, 2009, 1:19 pm

  32. > Artur Shakirov says:

    > проводил сравнительные тесты различных акселераторов.. вот например xCache и eAccelerator http://itblog.su/xcache-vs-eaccelerator.html

    > делал ещё общирный и более обьективный по всем поддерживаемым разработкам, данные не снимал.. вобщем итог таков что АРС рулит.

    А по другим обзорам – APC сливает обоим
    Так что думай сам

    Quote | Posted May 15, 2009, 1:21 pm

  33. > Exaktus says:

    > А как со стабильностью? Раньше, при повышении нагрузки, акселератор частенько намертво вешал апач. Как с этим сейчас?

    У него проблема с блокировками. Поищите “eAccelerator locks”

    Прочитаете много интересного. С этим можно бороться.

    Quote | Posted May 15, 2009, 1:23 pm

  34. > Проверьте сайт http://vkimo.org , memcached пока ещё едва дышит, но научим (ся)

    Подобные сайты не шибко и нуждаются в ускорении.
    Посещаемость то какая?

    Вы не прав, коллега. Ускороение нужно хотя бы для того чтобы вы могли слушать музыку с моего свйта http://gallery.vkimo.org/v/mmyun/

    Посещение слабое. Да это и не ставилось целью. Сайт для “своих” а сервер стоит у меня в гараже (г. Тампа, Флорида) на обычном чиповом (7 Mbps) кабеле.
    После ряда экспериментов перевёл сервер на Zend Server CE http://www.zend.com/en/products/server-ce/downloads. Инсталляция как песня. Пришлось немного поломать голову как заставить апач выдавать сайты с директории напрямую чтобы не утрудать себя пропиской отдельных файлов для каждого сайта. ZS CE имеет всё что нужно для моих потребностей APC, Memcached module и т.п. Рекомендую. Не в качестве рекламы :) ) Zend знают все админы. А этот Free. Т.е как Free Beer – и вкусно и на душе приятно.

    Quote | Posted August 28, 2009, 11:22 am

Leave a reply