EAccelerator на веб-сервере. Разгоняем Джумлу.

В последнее время мне довелось сделать несколько сайтов на CMS Joomla1.5. В целом эта система оставила о себе очень приятные впечатления, если бы не одно НО – уж очень она медленная. Задержки, которые требовались системе на то чтобы сгенерировать страницу, ощущались даже на тестовой домашней машине. Основная причина низкой производительности заключалась в том, что скрипт Джумлы во время сборки страницы подключает множество дополнительных файлов, которые обычно разбросаны в разных каталогах и, таким образом, создает нагрузку на дисковую систему веб-сервера. Для увеличения быстродействия Joomla существует множество способов, начиная от включения кеширования созданных страниц в админке системы до таких радикальных методов как установка специальных кеширующих расширений на сам веб-сервер. В сегодняшнем посте я рассмотрю одно из таких расширений – eAccelerator

Что такое eAccelerator?

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

Установка eAccelerator на веб-сервер с Debian Lenny

  1. Сначала отправляемся на страничку расширения в сети и скачиваем последнюю версию (на момент написания этого поста последней была 0.9.5.3). Распаковываем полученный архив, заходим в полученное дерево исходников и запускаем команду phpize (если такой команды нет – установите пакет php5-dev. Здесь и дальше я буду предполагать что у вас установлен Debian Linux. Для других дистрибутивов команда установки и название пакета могут отличаться).
  2. Если работа phpize завершилась успешно, запускаем ./configure –with-eaccelerator-shared-memory –with-php-config=/usr/bin/php-config –with-eaccelerator-userid=www-data –with-eaccelerator-content-caching && make
  3. Если configure будет жаловаться на неустановленные пакеты – установите их командой aptitude. Повторяем предыдущий пункт пока не увидим в консоли такие строчки:
    Build complete.
    Don’t forget to run ‘make test’.

    Это означает что расширение успешно скомпилировано. Запускаем команду make install или копируем вручную файл eaccelerator.so из директории modules/ дерева исходников в директорию с расширениями языка php (у меня это /usr/lib/php5/20060613+lfs/ У вас путь может отличаться).

  4. Расширение скомпилировано и установлено. Теперь нужно его добавить в конфиг, чтобы о нем стало известно интерпретатору. Для этого создаем в папке /etc/php5/apache2/conf.d/ файл eaccel.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=”1″
    eaccelerator.compress=”1″
    eaccelerator.compress_level=”9″

    Описание значения этих настроек можно найти в файле README в архиве с исходниками и поэтому повторять их здесь я не буду. Обратите внимание на параметр .cache_dir – он определеляет директорию в которой будет расположен кеш. Эта директория должна быть создана (mkdir /tmp/eaccelerator) и на нее должны быть установлена права достаточные для записи в нее пользователем от которого запущен веб-сервер. Для начала можете поставить chmod 0777 /tmp/eaccelerator но в дальнейшем советую изменить настройки на более секьюрные.

    Всё. Перезапускаем веб-сервер, заходим браузером на один из сайтов и проверяем директорию с кешем. Если вы все сделали правильно, то вас уже можно поздравить с успешно установленным расширением.

Замеряем насколько выросла производительность на примере CMS Joomla

Настроим Джумлу для работы с eAccelerator. Для этого нужно зайти в
админку и выбрать в пункте Global Configuration закладку System. В
разделе Cache Settings выбираем Yes и в качестве обработчика (cache
handler) указываем eAccelerator.

Для измерения производительности я использовал Apache
Benchmark. Замерялись обращения к главной странице сайта на Джумле -
1000 обращений в течении каждого из тестов. По результатам
средняя скорость выдачи страниц увеличилось в ~3 раза. По-моему неплохо.

Если вам понравился этот сайт, вы можете подписаться на rss

Отзывы: 6 комментариев

  • driestinhet
    16 Март 2009 в 20:33

    Мне понравилось. Стока полезного материала. Тока обновляйтесь почаще :)

  • Компьютерщик
    11 Апр 2009 в 2:13

    Спасибо за статью. Успехов Вам!

  • Павел
    24 Ноя 2009 в 9:28

    А как выбрать eAccelerator в джумле если там в выпадающем списке “Обработчик кэша” есть только вариант “Файл” ?

  • Руслан
    25 Ноя 2009 в 3:00

    Это значит что eAccelerator не установлен на веб-сервере… Джумла показывает только те варианты кеша, которые доступны в настоящий момент…

  • Павел
    25 Ноя 2009 в 7:33

    Хостер мне сегодня сообщил, что eAccelerator есть, но выключен ибо может способствовать DDoS атакам. Для меня это загадка.

    [?php echo extension_loaded('eaccelerator') ?] выдаёт true

    [?php print_r(get_extension_funcs('eaccelerator')); ?] выдаёт неполный набор функций, а частности нет eaccelerator_get() и eaccelerator_put()

  • Петр
    16 Фев 2010 в 9:17

    Интересная статья. Нужно будет проверить.

Ваш отзыв

Имя (*)

E-mail (*)

Сайт

Сообщение