Пользовательский интерфейс тега JSF: повтор, вызывающий высокую загрузку ЦП

Мы используем приложение (использующее JSF2 (Mojara)), которое имеет несколько больших страниц с использованием тега ui:repeat и которое было развернуто в версии JBoss EAP 6.0. В последнее время мы столкнулись с очень высокой загрузкой ЦП во время наших тестов производительности, и дампы потоков указывают на то, что UIRepeat, вероятно, может быть причиной этого. % ЦП:

Любая помощь в этом отношении была бы отличной.

"ajp-/10.138.51.32:8209-9" daemon prio=10 tid=0x00007fa3cc2a3800 nid=0x52a6 runnable [0x00007fa3fa0d9000]
   java.lang.Thread.State: RUNNABLE
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217)
    at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157)
    at com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:89)
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    at com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:518)
    at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
    at javax.faces.component.UIForm.visitTree(UIForm.java:381)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
    at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
    at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:297)
    at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:391)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
    at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:169)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.java:67)
    at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.invoke(JBossWebContext.java:48)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:505)
    at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:452)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931)
    at java.lang.Thread.run(Thread.java:662)
   Locked ownable synchronizers:
    - None

person user2228591    schedule 18.09.2013    source источник
comment
Какая версия Мохарры? Пробовали последнюю? В версии 2.1.24 были внесены некоторые серьезные исправления производительности, и в настоящее время это уже версия 2.1.26.   -  person BalusC    schedule 18.09.2013
comment
Привет приятель, спасибо за быстрый ответ. В моей локальной среде Windows мы используем лица Mojarra с версией jsf-impl-2.0.3-b5.jar. Однако мы провели тесты производительности в среде RedHat Linux с JBoss EAP 6.0 и обнаружили, что используется версия JSF jsf-api-1.2_15-b01-redhat-1.jar. Можем ли мы обновить версию jsf в EAP 6.0 в Linux, и если да, то процесс просто загружает последнюю банку и размещает ее?   -  person user2228591    schedule 18.09.2013
comment
Привет, BalusC, мы обновили версию JSF до 2.1.26, как вы предложили в EAP6.0 (в RH Linux). Мы провели тест на 100 пользователей, и производительность оказалась лучше, чем в предыдущих запусках с использованием более старой версии jsf jar. Спасибо за предложение. Мы также использовали один из ваших документов для выполнения обновления: server" title="обновите и используйте mojarra в качестве реализации jsf с сервером jboss"> stackoverflow.com/questions/17085717/. В целом загрузка процессора по-прежнему находится на отметке 85% во время теста и падает до 5% после теста. Не уверен, что это ожидается   -  person user2228591    schedule 19.09.2013
comment
Вы установили период обновления лицевых панелей на -1? stackoverflow.com/questions/17894035/   -  person BalusC    schedule 19.09.2013
comment
Нет... еще не устанавливали это свойство. Обязательно попробую это.   -  person user2228591    schedule 19.09.2013