RENDER_RESPONSE занимает много времени в шве - PullRequest
1 голос
/ 24 сентября 2010


Я пишу приложение, используя JBOSS Seam с Richfaces. К сожалению, некоторые страницы загружаются очень долго, особенно когда я хочу показать около 100 (или более) строк в таблице.
Получение ответа из базы данных занимает около 2453 мс, так что это довольно хорошо. Однако фаза RENDER_RESPONSE занимает около 23750 мс, поэтому это недопустимо. У объекта, который я возвращаю, нет соединений EAGER.

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

Привет, Fryta PS. Здесь у вас есть лог из моего приложения: 09: 49: 52,125 ИНФОРМАЦИЯ [[/ my_aplication]] ДО - INVOKE_APPLICATION 5 - / my_aplication / Report.seam
09: 49: 54,578 ИНФОРМАЦИЯ [Отчет] Окончание создания отчета: 2453
09: 49: 54 578 ИНФОРМАЦИЯ [[/ my_aplication]] ПОСЛЕ - INVOKE_APPLICATION 5 - / my_aplication / Report.seam
09: 49: 54 578 ИНФОРМАЦИЯ [[/ my_aplication]] ДО - RENDER_RESPONSE 6 - / my_aplication / Report.seam
09: 49: 54 687 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594687
09: 49: 54 687 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594687
09: 49: 54 687 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594687
09: 49: 54 687 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594687
09: 49: 54 687 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594687
09: 49: 54,718 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314594718
09: 50: 18,437 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314618437
09: 50: 18,437 ИНФОРМАЦИЯ [Отчет] getResultList (): 1285314618437
09: 50: 18,468 ИНФОРМАЦИЯ [[/ my_aplication]] ПОСЛЕ - RENDER_RESPONSE 6 - / my_aplication / Report.seam
09: 50: 18,890 ИНФОРМАЦИЯ [TimingFilter]

09: 50: 18 890 ИНФОРМАЦИЯ [TimingFilter] Итого: 18258 мс для: / my_aplication / Report.seam

Ответы [ 3 ]

1 голос
/ 27 сентября 2010

Предлагаю вам прочитать этот замечательный пост на , как вы можете ускорить работу вашего приложения JSF / Seam / Richfaces , написанного Дэн Аллен (который является автором Seam в действии)

1 голос
/ 24 сентября 2010

Я вижу эту строку в вашем журнале:

getResultList(): 1285314594687

... повторяется довольно много. Что делает этот звонок? Это просто возвращает список, который был инициализирован в другом месте? Или это звонит в базу? Если в вызове используется какая-либо логика, это может быть причиной замедления.

0 голосов
/ 25 сентября 2010

Я почти уверен, что это происходит, потому что вы лениво загружаете связанные сущности.Поскольку в Seam имеется встроенная поддержка шаблона Open Session in View (что позволяет избежать исключения LazyLoadingException), Для каждого ленивого ассоциированного объекта Hibernate обращается к базе данных . Вы можете переопределить getResultList (или создать свой собственный метод) и загрузить все необходимые объекты, используя один SQL-запрос

...