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


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

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

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

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

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

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

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

  • логин
  • Доступ К Домашней Странице

с 50 одновременными соединениями, результаты следующим образом:

нет Кэширование Кода Операции

APC

eAccelerator

XCache

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

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

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

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

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

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

7 56

7 ответов:

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

чтобы принять решение, я использовал ab (Apache bench) для тестирования сервера и протестировал три комбинации (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://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

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

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

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

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

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

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

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

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

Я говорю:

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

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

  1. убедитесь, что это действительно синтаксический анализ PHP кода, который вызывает проблемы с производительностью путем профилирования вашего приложения. Я думаю, что это очень вероятно, что это не так - и в этом случае вы будете тратить свое время (на самом деле, используя свое время негативно продуктивно), установив любой из них.