Performance JSF标记ui:重复导致高CPU利用率
我们使用一个应用程序(使用JSF2(Mojara)),它有一些使用ui:repeat标记的大页面,并且已经部署在JBoss EAP 6.0版本上。最近,在性能测试期间,我们一直面临着非常高的CPU利用率,线程转储表明UIRepeat可能是原因。我们已将其中一个线程转储的跟踪放在下面,该线程转储是可疑的,占用了90%以上的CPU: 这方面的任何帮助都将是巨大的Performance JSF标记ui:重复导致高CPU利用率,performance,jsf,uirepeat,jboss-eap-6,Performance,Jsf,Uirepeat,Jboss Eap 6,我们使用一个应用程序(使用JSF2(Mojara)),它有一些使用ui:repeat标记的大页面,并且已经部署在JBoss EAP 6.0版本上。最近,在性能测试期间,我们一直面临着非常高的CPU利用率,线程转储表明UIRepeat可能是原因。我们已将其中一个线程转储的跟踪放在下面,该线程转储是可疑的,占用了90%以上的CPU: 这方面的任何帮助都将是巨大的 "ajp-/10.138.51.32:8209-9" daemon prio=10 tid=0x00007fa3cc2a3800 nid=
"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
哪种莫哈拉版本?试过最新的吗?在2.1.24中有一些主要的性能修复,现在已经是2.1.26了。嗨,mate,谢谢你的快速回复。在我的本地Windows环境中,我们使用版本为jsf-impl-2.0.3-b5.jar的Mojara faces。但是,我们使用JBoss EAP 6.0在RedHat Linux环境上运行了性能测试,发现使用的JSF版本是JSF-api-1.2_15-b01-RedHat-1.jar。我们可以在Linux中升级EAP6.0中的jsf版本吗?如果可以,那么这个过程只是下载最新的jar并放置它吗?嗨,BalusC,我们已经按照您在EAP6.0(RH Linux)上的建议将jsf版本更新为2.1.26。我们运行了一个100用户的测试,与以前使用旧版本的JSFJARS运行相比,性能要好得多。谢谢你的建议。我们也按照您的一份文档执行升级-。总体而言,测试期间CPU利用率仍在85%左右,测试后降至5%。不确定这是否为ExpectedId您是否将facelets刷新周期设置为-1?不,尚未设置此属性。我一定会试试这个。