Какой PHP-код-код должен использовать для повышения производительности?

Я пытаюсь повысить производительность при высокой нагрузке и хотел бы реализовать кэширование кода операции. Какое из следующего следует использовать?

  • APC – Руководство по установке
  • eAccelerator – Руководство по установке
  • XCache – Руководство по установке

Я также открыт для любых других альтернатив, которые проскользнули под моим радаром.

В настоящее время работает на складе Debian Etch с Apache 2 и PHP 5.2

[Обновление 1]

Добавлены ссылки установки HowtoForge

[Обновление 2]

Основываясь на полученных ответах и ​​ответах, я тестировал все 3 реализации, используя следующий план тестирования Apache JMeter в своем приложении:

  • Авторизоваться
  • Доступ к домашней странице

При наличии 50 одновременных соединений следующие результаты:

Нет кэширования кода операции
Нет кэширования кода операции

APC
APC

Eaccelerator
Eaccelerator

XCache
XCache

График производительности (лучше – меньше)
График производительности

Из приведенных выше результатов eAccelerator имеет небольшое преимущество в производительности по сравнению с APC и XCache. Тем не менее, самое главное из вышеприведенных данных состоит в том, что любое кэширование кода операции дает огромный импульс в производительности.

Я решил использовать APC из-за следующих двух причин:

  • Пакет доступен в официальном репозитории Debian
  • Более функциональная панель управления

Подводя итог моему опыту:

Простота установки: APC> eAccelerator> XCache
Производительность: eAccelerator> APC, XCache
Панель управления: APC> XCache> eAccelerator

Я думаю, что ответ может зависеть от типа веб-приложений, которые вы используете. Я должен был принять это решение два года назад и не мог решить между Zend Optimizer и eAccelerator.

Чтобы принять мое решение, я использовал ab (сканер apache) для тестирования сервера и протестировал три комбинации (zend, eaccelerator, оба выполнялись) и доказал, что eAccelerator сам по себе дал максимальную производительность.

Если у вас есть роскошь времени, я бы порекомендовал делать подобные тесты самостоятельно и принимал решение на основе ваших результатов.

Я использую APC, потому что он был прост в установке в Windows, и я разрабатываю WAMP.

Интеграция APC в PHP6 обсуждалась здесь: http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc

И есть инструкции по установке APC на Debian Etch здесь: http://www.howtoforge.com/apc-php5-apache2-debian-etch

Я провел несколько тестов с помощью eAcclerator, APC, XCache и Zend Optimizer (хотя Zend – это оптимизатор, а не кеш).

Результаты тестов http://img.ruphp.com/caching/

Результат: eAccelerator является самым быстрым (во всех тестах), за которым следуют XCache и APC. (На диаграмме указано количество секунд, чтобы вызвать домашнюю страницу WordPress 10 000 раз).

Zend Optimizer сделал все медленнее (!).

Я не могу сказать вам точно, но место, где я сейчас работаю, – это смотреть APC и eAccelerator. Однако это может повлиять на вас – APC будет интегрирована в будущий выпуск PHP (спасибо Ed Haber за ссылку).

У меня был хороший успех с eAccelerator (улучшение скорости без нагрузки примечательно), но XCache также кажется довольно перспективным. Возможно, вам захочется выполнить некоторые испытания с каждым, хотя ваше приложение может масштабироваться по-разному.

Я использую XCache уже более года без каких-либо проблем.

Я попытался переключиться на eAccelerator, но в итоге появился куча сегментированных ошибок (это меньше прощает ошибки). Основное преимущество eAccelerator заключается в том, что это не просто кеш-код операции, но и оптимизатор.

Вы должны полностью проверить свое приложение с каждым из них, чтобы убедиться, что нет никаких проблем, а затем я буду использовать apachebench, чтобы проверить его при загрузке.

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

Поэтому я бы сказал:

  1. Не используйте ни одно из указанных выше. Покупайте больше олова вместо этого, это более надежный (то есть безошибочный) способ повышения производительности. ИЛИ
  2. Пойдите с тем, что из вышеперечисленного является самым надежным, проверив штаны с вашего приложения.

Но я бы сказал:

  1. Убедитесь, что это ДЕЙСТВИТЕЛЬНО PHP-анализ кода, который вызывает проблемы с производительностью, профилируя ваше приложение. Я думаю, что это очень вероятно, что это не так – в этом случае вы будете тратить свое время (фактически, используя свое время отрицательно продуктивно), установив любой из них.