Я пытаюсь повысить производительность при высокой нагрузке и хотел бы реализовать кэширование кода операции. Какое из следующего следует использовать?
Я также открыт для любых других альтернатив, которые проскользнули под моим радаром.
В настоящее время работает на складе Debian Etch с Apache 2 и PHP 5.2
[Обновление 1]
Добавлены ссылки установки HowtoForge
[Обновление 2]
Основываясь на полученных ответах и ответах, я тестировал все 3 реализации, используя следующий план тестирования Apache JMeter в своем приложении:
При наличии 50 одновременных соединений следующие результаты:
Нет кэширования кода операции
APC
Eaccelerator
XCache
График производительности (лучше – меньше)
Из приведенных выше результатов eAccelerator имеет небольшое преимущество в производительности по сравнению с APC и XCache. Тем не менее, самое главное из вышеприведенных данных состоит в том, что любое кэширование кода операции дает огромный импульс в производительности.
Я решил использовать APC из-за следующих двух причин:
Подводя итог моему опыту:
Простота установки: 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, чтобы проверить его при загрузке.
Эти надстройки исторически вводили множество странных ошибок для отслеживания. Эти ошибки могут вызывать противоречивое поведение, которое невозможно легко диагностировать, поскольку оно зависит от состояния кеша.
Поэтому я бы сказал:
Но я бы сказал: