2

WordPress и eAccelerator. Ускорение WordPress и снижение потребляемой памяти.

Одна из самых часто обсуждаемых проблем WordPress — объем потребляемой памяти. И действительно, чистая установка WP 2.9.2 для генерации страницы панели управления требует около 23-24 Мб. Стандартный пакет плагинов увеличивает этот объем еще до 25-26 Мб.  Чтобы хоть как-то сократить эти чудовищные цифры, кто-то рекомендует устанавливать облегченные переводы, специальные сборки, плагины (а-ля WP Super Cache) — все это от лукавого ). Радикально проблему решает установка на сервер eAccelerator’a. 


Что такое eAccelerator? Это бесплатное расширение для PHP, увеличивающее скорость выполнения скриптов и снижающее нагрузку на сервер. eAccelerator оптимизирует скрипты, а также кэширует их в уже скомпилированном состоянии. Еще один приятный бонус от использования eAccelerator’a — снижение потребляемой памяти.

К примеру этот блог (WP 2.9.2) без eAccelerator’а потребляет 26 Мб. С eAccelerator это значение снизилось до 5.3 Мб (в 5 раз). Если кому интересно, вот исследования lecactus’а по этой теме.

Вывод из всего этого один — для WordPress нужен хостинг с поддержкой eAccelerator.

Теперь несколько слов о его настройке. В ходе экспериментов столкнулся с тем, что хостеры по умолчанию выставляют совсем не оптимальные параметры.

Для ручной настройки нужен доступ к php.ini.

Параметры eAccelerator:

  • eaccelerator.shm_size — объем памяти зарезервированный под кэш. Важнейший параметр. По умолчанию мой хостер выставил значение 8 Мб. Для WordPress этого оказалось маловато. При этом значении объем потребляемой памяти снизился всего до 9 Мб. Постепенно увеличивая память под кэш дошел до 16 Мб. Потребляемая память WordPress ~ 5 Мб. Дальнейшее увеличение памяти под кэш не привело к уменьшению потребляемой памяти. Таким образом 16 Мб — это минимальное значение для WordPress, а так чем больше кэш — тем лучше.
  • eaccelerator.enable — включить eAccelerator. Должно быть присвоено значение «1».
  • eaccelerator.optimizer — включить режим оптимизации. Должно быть присвоено значение «1».
  • eaccelerator.debug — режим отладки. Должно быть значение «0».
  • eaccelerator.check_mtime — проверяет время создания скрипта, при необходимости обновляет скомпилированную версию скрипта в кэше. Рекомендую эту опцию не отключать, иначе обновлять кэш придется в ручную.
  • eaccelerator.filter — здесь можно указать расширения файлов, которые подлежат кэшированию. Например «*.php *.phtml». Если значение не указано, кэшируются все файлы, которые обрабатываются с помощью PHP.
  • eaccelerator.shm_max — определят максимальный объем данных, который пользователь может поместить в кэш с помощью функций типа eaccelerator_put. Значение определяется в байтах. «0» — отменяет лимит. Рекомендую оставить «0».
  • eaccelerator.shm_ttl — если для кэширования скрипта не хватает памяти, eAccelerator удалит из памяти скрипты, к которым не было обращений за последние n секунд. Рекомендую это значение устанавливать в районе 600-1800 (10-30 мин).
  • eaccelerator.shm_prune_period — еще один способ обновления кэша при нехватки памяти. Старые данные будут удалены, если предыдущая попытка была сделана более n секунд назад. По умолчанию значение «0», при котором eAccelerator не будет пытаться удалить старый данные из памяти.
  • eaccelerator.shm_only — включить или отключить сохранение кеша только в памяти. Этот параметр не влияет на данные сессий и кэширование контента. По умолчанию, значение «0» — данные будут кешироваться и в памяти и на диске. Рекомендую оставить это значение.
  • eaccelerator.compress — должно быть присвоено значение «1».
  • eaccelerator.compress_level — уровень сжатия. Максимальное значение — 9. Мой хостер выставил — 6. Пришлось менять.

На всякий случай приведу пример своей конфигурации:

eaccelerator.shm_size="32"
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="900"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Внимание! Если установлен Zend Optimizer, то в php.ini его загрузка должна осуществляться ПОСЛЕ eAccelerator!

Ссылки по теме:

Метки: WordPress