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


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

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

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

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

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

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

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

  • Вход в систему
  • Доступ к Домашней странице

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

Нет кода операции Кэширование
No Opcode Caching

АПК
APC

Ускоритель
eAccelerator

XCache-кэш
XCache

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

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

Я решил использовать APC в связи со следующими 2 причины:

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

Чтобы обобщить мой опыт:

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

Author: Neysor, 2008-08-26

7 answers

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

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

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

 16
Author: mercutio, 2008-08-26 17:58:05

Я использую 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

 5
Author: Ed Haber, 2008-08-26 19:00:26

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

Контрольные результаты http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

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

Оптимизатор Zend сделал все медленнее (!).

 5
Author: BlaM, 2015-06-20 21:50:57

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

 4
Author: Thomas Owens, 2008-08-26 19:01:43

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

 3
Author: Dana the Sane, 2008-08-26 17:57:14

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

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

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

 1
Author: The How-To Geek, 2008-08-26 18:02:19

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

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

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

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

  1. Убедитесь, что именно синтаксический анализ PHP-кода вызывает проблемы с производительностью, профилируя ваше приложение. Я думаю, что весьма вероятно, что это не так - в этом случае вы бы потратили свое время (на самом деле, используя свое время негативно продуктивно), установив любой из них.
 1
Author: MarkR, 2008-09-16 21:24:12