Какой PHP-код-код должен использовать для повышения производительности?
Я пытаюсь повысить производительность при высокой нагрузке и хотел бы реализовать кэширование кода операции. Какое из следующего следует использовать?
Я также открыт для любых других альтернатив, которые проскользнули под моим радаром.
В настоящее время работает на складе Debian Etch с Apache 2 и PHP 5.2
[Обновить 1]
Добавлены ссылки установки HowtoForge
[Обновить 2]
На основании полученных ответов и отзывов я проверил все 3 реализации, используя следующий план тестирования Apache JMeter в своем приложении:
- Войти
- Домашняя страница доступа
С 50 одновременными соединениями результаты следующие:
Нет кеширования опкода
![No Opcode Caching]()
APC
![APC]()
Eaccelerator
![eAccelerator]()
XCache
![XCache]()
График производительности (лучше меньше)
![Performance Graph]()
Из приведенных выше результатов eAccelerator имеет небольшое преимущество в производительности по сравнению с APC и XCache. Тем не менее, самое важное из вышеперечисленных данных состоит в том, что любое кэширование кода операции дает огромный прирост производительности.
Я решил использовать APC из-за следующих двух причин:
- Пакет доступен в официальном репозитории Debian.
- Более функциональная панель управления
Подводя итог моему опыту:
Простота установки: APC > eAccelerator > XCache
Производительность: eAccelerator > APC, XCache
Панель управления: APC > XCache > eAccelerator
Ответы
Ответ 1
Я думаю, что ответ может зависеть от типа веб-приложений, которые вы используете. Я должен был принять это решение два года назад и не мог решить между Zend Optimizer и eAccelerator.
Чтобы принять мое решение, я использовал ab (сканер apache) для тестирования сервера и протестировал три комбинации (zend, eaccelerator, оба выполняемые) и доказал, что eAccelerator сам по себе дал максимальную производительность.
Если у вас есть роскошь времени, я бы порекомендовал делать подобные тесты самостоятельно и принимал решение на основе ваших результатов.
Ответ 2
Я использую 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
Ответ 3
Я провел несколько тестов с помощью 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 сделал все медленнее (!).
Ответ 4
Я не могу вам точно сказать, но место, где я сейчас работаю, - это смотреть APC и eAccelerator. Однако это может повлиять на вас - APC будет интегрирована в будущую версию PHP (спасибо Ed Haber за ссылку).
Ответ 5
У меня был хороший успех с eAccelerator (улучшение скорости без нагрузки примечательно), но XCache также кажется довольно перспективным. Возможно, вам захочется выполнить некоторые испытания с каждым, хотя ваше приложение может масштабироваться по-разному на каждом.
Ответ 6
Я использую XCache уже более года без каких-либо проблем.
Я попытался переключиться на eAccelerator, но в итоге появился куча сегментированных ошибок (это меньше прощает ошибки). Основное преимущество eAccelerator заключается в том, что это не только кеш-код операции, но и оптимизатор.
Вы должны полностью протестировать свое приложение с каждым из них, чтобы убедиться, что нет никаких проблем, а затем я буду использовать apachebench, чтобы проверить его при загрузке.
Ответ 7
Эти надстройки исторически ввели множество странных ошибок для отслеживания. Эти ошибки могут вызывать непоследовательное поведение, которое невозможно легко диагностировать, поскольку оно зависит от состояния кеша.
Итак, я бы сказал:
- Не используйте ничего из вышеперечисленного. Покупайте больше tin вместо этого, это более надежный (т.е. Без ошибок) способ повышения производительности.
ИЛИ
- Идите в зависимости от того, какой из вышеперечисленных является наиболее надежным, проверив штаны с вашего приложения.
Но я бы сказал:
- Удостоверьтесь, что это ДЕЙСТВИТЕЛЬНО Разбор кода PHP, который вызывает проблемы с производительностью, профилируя ваше приложение. Я думаю, что это очень вероятно, что это не так - в этом случае вы будете тратить свое время (фактически, используя свое время отрицательно продуктивно), установив любой из них.