Проблема с производительностью в функции restoreView (JSF Lifecycle)

Наше приложение имеет проблемы со временем рендеринга в различных частях. Мы смогли точно определить проблему производительности с помощью профилировщика (YourKit Java Profiler) на этапе восстановления JSF (жизненный цикл). Поскольку на некоторых страницах мы используем много компонентов, источником проблемы должно быть отображение дерева. Какой-то вопрос по stackru выглядит очень похоже на то, что мы имеем дело. Также мы можем увидеть одинаковую медленную скорость в разработке и производстве.

Некоторые характеристики:

  • MyFaces 2.1.7
  • javax.el 2.1.0

Профилировщик (CTRL+SCROLL, чтобы увидеть детали):введите описание изображения здесь

Мы пытаемся найти решения. Пока что мы придумали такие:

  • Используйте меньше композиции / компонентов (что не так здорово, потому что нам нравилось создавать общие компоненты).
  • Мы также можем перейти в режим без состояния JSF.
  • Найдите актуальную проблему с JSF (IN DEEP).
  • Недавно мы обнаружили, что некоторая библиотека JUEL (язык выражений) может значительно увеличить время рендеринга.

Я имел дело с тем, чтобы JUEL работал с Spring 3 (с OSGI). Вот спецификация: комплект JUEL 2.1.3.1 (примечание: этот комплект использует другую версию javax.el, чем та, которую я использую в своем приложении, вызовет конфликт?)

Я нашел еще один репозиторий Maven, в котором есть только реализация Juel и более свежая версия.

Обновление: нашел решение для коллизии javax.el, так как в juel-api было много проблем (потому что он экспортирует его собственный javax.el). Я изменил манифест с этой строкой Fragment-Host: javax.el, чтобы устранить его.,

Есть ли конфигурация / настройка для обеспечения лучшей производительности? Или как вам на самом деле настроить JUEL с MyFaces и Spring?

1 ответ

Решение

Я бы сказал, что проблема вызвана Spring Web Flow. Я помню этот выпуск SWF-1540. Сначала проверьте, используете ли вы правильную версию (2.4.0.M1 или выше). Обратите внимание, что лично я не проверял, имеет ли эта конфигурация проблему с производительностью, но я могу сказать, что MyFaces 2.1.7 более ранних версий не имеет никаких проблем. Известно, что в некоторых версиях EL есть проблемы с perf, поэтому попробуйте использовать juel или apache EL (jasper-el, в комплекте с Tomcat).

Как личное мнение, следите за Spring прокси, известно, что в некоторых случаях, когда страницы очень большие и сложные, прокси оказывает значительное влияние на производительность. Предлагаемое решение - использовать Apache OpenWebbeans, который является очень быстрой реализацией CDI, оптимизированной для тех случаев, когда у вас много связанных бинов.

Вы также можете проверить эту статью "Понимание JSF 2 и Wicket: Сравнение производительности", чтобы получить советы о производительности MyFaces.

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

Другие вопросы по тегам