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

Filed Under (Линукс, Сайтостроение) by admin on 30-01-2009

В последнее время мне довелось сделать несколько сайтов на 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 раза. По-моему неплохо.

Post a comment