Какой кэшер PHP-кода следует использовать для повышения производительности? [закрыто]
Я пытаюсь повысить производительность при высокой нагрузке и хотел бы реализовать кэширование кода операции. Что из следующего я должен использовать?
- APC - Руководство по установке
- eAccelerator - Руководство по установке
- XCache - Руководство по установке
Я также открыт для любых других альтернатив, которые ускользнули от моего внимания.
В настоящее время работает на стандартной версии Debian Etch с Apache 2 и PHP 5.2
[ Обновление 1]
Добавлены ссылки на установку HowToForge
[ Обновление 2]
Основываясь на полученных ответах и отзывах, я протестировал все 3 реализации, используя следующий план тестирования Apache JMeter в своем приложении:
- Вход в систему
- Доступ к Домашней странице
При 50 одновременных подключениях результаты следующие:
Нет кода операции Кэширование
АПК
Ускоритель
XCache-кэш
График производительности (чем меньше, тем лучше)
Из приведенных выше результатов eAccelerator имеет небольшое преимущество в производительности по сравнению с APC и XCache. Однако, что наиболее важно из приведенных выше данных, так это то, что любой вид кэширования кода операции дает огромный прирост производительности.
Я решил использовать APC в связи со следующими 2 причины:
- Пакет доступен в официальном репозитории Debian
- Более функциональная панель управления
Чтобы обобщить мой опыт:
Простота установки: APC > eAccelerator > XCache
Производительность: eAccelerator > APC, XCache
Панель управления: APC > XCache > eAccelerator
7 answers
Я думаю, что ответ может зависеть от типа веб-приложений, которые вы используете. Я должен был сам принять это решение два года назад и не мог выбрать между 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 (хотя Zend - это оптимизатор, а не кэш).
Результат: eAccelerator является самым быстрым (во всех тестах), за ним следуют XCache и APC. (На диаграмме показано количество секунд, за которое можно вызвать домашнюю страницу WordPress 10 000 раз).
Оптимизатор Zend сделал все медленнее (!).
Я не могу сказать вам наверняка, но место, где я сейчас работаю, смотрит на APC и eAccelerator. Однако это может повлиять на вас - APC будет интегрирован в будущий выпуск PHP (спасибо Эду Хаберу за ссылку).
У меня был хороший успех с eAccelerator (улучшение скорости без нагрузки заметно), но XCache также кажется довольно многообещающим. Возможно, вы захотите запустить несколько пробных версий с каждым из них, хотя ваше приложение может масштабироваться по-разному в каждом из них.
Я использую XCache уже больше года без каких-либо проблем.
Я попытался переключиться на eAccelerator, но в итоге получил кучу ошибок сегментации (это менее прощает ошибки). Основное преимущество eAccelerator заключается в том, что это не просто кэш кода операции, это также оптимизатор.
Вы должны полностью протестировать свое приложение с каждым из них, чтобы убедиться, что нет никаких проблем, а затем я бы использовал apachebench для тестирования его под нагрузкой.
Эти дополнения исторически приводили к появлению множества странных ошибок для отслеживания. Эти ошибки могут привести к непоследовательному поведению, которое нелегко диагностировать, поскольку оно зависит от состояния кэша.
Поэтому я бы сказал:
- Не используйте ничего из вышеперечисленного. Вместо этого купите больше tin, это более надежный (т. е. безошибочный) способ повышения производительности. ИЛИ
- Выбирайте то, что из вышеперечисленного является наиболее надежным, предварительно протестировав штаны с вашего приложение.
Но я бы сказал:
- Убедитесь, что именно синтаксический анализ PHP-кода вызывает проблемы с производительностью, профилируя ваше приложение. Я думаю, что весьма вероятно, что это не так - в этом случае вы бы потратили свое время (на самом деле, используя свое время негативно продуктивно), установив любой из них.