2

Our app is having frecuent outages so we took a heap dump, because GC was using a lot of CPU, and we find that for the most part, there is a plenty of javax.faces.component.StateHolderSaver instances.

enter image description here

That image is just one session and the arraylist is storing 49953 instances. So, using the path to GC roots, we identified the thread:

http-nio-8080-exec-184  Runnable Thread ID: 805
  org.omnifaces.cdi.viewscope.ViewScopeStorageInSession$Proxy$_$$_WeldClientProxy.getBeanStorageId()
  org.omnifaces.cdi.viewscope.ViewScopeManager.getBeanStorage(Contextual) ViewScopeManager.java:176
  org.omnifaces.cdi.viewscope.ViewScopeManager.getBean(Contextual) ViewScopeManager.java:127
  org.omnifaces.cdi.viewscope.ViewScopeManager$Proxy$_$$_WeldClientProxy.getBean(Contextual)
  org.omnifaces.cdi.viewscope.ViewScopeContext.get(Contextual) ViewScopeContext.java:67
  org.jboss.weld.contexts.PassivatingContextWrapper$AbstractPassivatingContextWrapper.get(Contextual) PassivatingContextWrapper.java:78
  org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(Bean, BeanManagerImpl, CreationalContext) ContextualInstanceStrategy.java:95
  org.jboss.weld.bean.ContextualInstance.get(Bean, BeanManagerImpl, CreationalContext) ContextualInstance.java:50
  org.jboss.weld.manager.BeanManagerImpl.getReference(Bean, Type, CreationalContext, boolean) BeanManagerImpl.java:694
  org.jboss.weld.module.web.el.AbstractWeldELResolver.lookup(BeanManagerImpl, ELContext, String) AbstractWeldELResolver.java:107
  org.jboss.weld.module.web.el.AbstractWeldELResolver.getValue(ELContext, Object, Object) AbstractWeldELResolver.java:90
  org.jboss.weld.environment.servlet.util.ForwardingELResolver.getValue(ELContext, Object, Object) ForwardingELResolver.java:49
  javax.el.CompositeELResolver.getValue(ELContext, Object, Object) CompositeELResolver.java:62
  com.sun.faces.el.DemuxCompositeELResolver._getValue(int, ELResolver[], ELContext, Object, Object) DemuxCompositeELResolver.java:180
  com.sun.faces.el.DemuxCompositeELResolver.getValue(ELContext, Object, Object) DemuxCompositeELResolver.java:208
  org.apache.el.parser.AstIdentifier.getValue(EvaluationContext) AstIdentifier.java:94
  org.apache.el.parser.AstValue.getValue(EvaluationContext) AstValue.java:137
  org.apache.el.ValueExpressionImpl.getValue(ELContext) ValueExpressionImpl.java:184
  org.jboss.weld.module.web.el.WeldValueExpression.getValue(ELContext) WeldValueExpression.java:50
  com.sun.faces.facelets.el.TagValueExpression.getValue(ELContext) TagValueExpression.java:115
  javax.faces.component.ComponentStateHelper.eval(Serializable, Object) ComponentStateHelper.java:200
  javax.faces.component.UIComponentBase.isRendered() UIComponentBase.java:470
  javax.faces.component.UIComponentBase.processDecodes(FacesContext) UIComponentBase.java:1258  <2 recursive calls>
  javax.faces.component.UIForm.processDecodes(FacesContext) UIForm.java:238
  com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(VisitContext, UIComponent) PartialViewContextImpl.java:629
  com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(UIComponent, VisitCallback) PartialVisitContext.java:183
  javax.faces.component.UIForm.visitTree(VisitContext, VisitCallback) UIForm.java:405
  javax.faces.component.UIComponent.visitTree(VisitContext, VisitCallback) UIComponent.java:1747  <2 recursive calls>
  com.sun.faces.context.PartialViewContextImpl.processComponents(UIComponent, PhaseId, Collection, FacesContext) PartialViewContextImpl.java:423
  com.sun.faces.context.PartialViewContextImpl.processPartial(PhaseId) PartialViewContextImpl.java:284
  org.primefaces.context.PrimePartialViewContext.processPartial(PhaseId) PrimePartialViewContext.java:65
  javax.faces.context.PartialViewContextWrapper.processPartial(PhaseId) PartialViewContextWrapper.java:252
  org.omnifaces.context.OmniPartialViewContext.processPartial(PhaseId) OmniPartialViewContext.java:122
  javax.faces.component.UIViewRoot.processDecodes(FacesContext) UIViewRoot.java:1030
  com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(FacesContext) ApplyRequestValuesPhase.java:79
  com.sun.faces.lifecycle.Phase.doPhase(FacesContext, Lifecycle, ListIterator) Phase.java:100
  com.sun.faces.lifecycle.LifecycleImpl.execute(FacesContext) LifecycleImpl.java:201
  javax.faces.webapp.FacesServlet.service(ServletRequest, ServletResponse) FacesServlet.java:670
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:230
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  ar.com.dux.jsf.filters.CacheFilter.doFilter(ServletRequest, ServletResponse, FilterChain) CacheFilter.java:27
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  ar.com.dux.jsf.filters.SecurityFilter.doFilter(ServletRequest, ServletResponse, FilterChain) SecurityFilter.java:93
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  org.primefaces.webapp.filter.FileUploadFilter.doFilter(ServletRequest, ServletResponse, FilterChain) FileUploadFilter.java:89
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  org.apache.tomcat.websocket.server.WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) WsFilter.java:52
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  com.ocpsoft.pretty.PrettyFilter.doFilter(ServletRequest, ServletResponse, FilterChain) PrettyFilter.java:145
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  org.omnifaces.filter.GzipResponseFilter.doFilter(HttpServletRequest, HttpServletResponse, HttpSession, FilterChain) GzipResponseFilter.java:183
  org.omnifaces.filter.HttpFilter.doFilter(ServletRequest, ServletResponse, FilterChain) HttpFilter.java:108
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
  org.apache.catalina.core.StandardWrapperValve.invoke(Request, Response) StandardWrapperValve.java:198
  org.apache.catalina.core.StandardContextValve.invoke(Request, Response) StandardContextValve.java:96
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(Request, Response) AuthenticatorBase.java:474
  org.apache.catalina.core.StandardHostValve.invoke(Request, Response) StandardHostValve.java:140
  org.apache.catalina.valves.ErrorReportValve.invoke(Request, Response) ErrorReportValve.java:79
  org.apache.catalina.valves.AbstractAccessLogValve.invoke(Request, Response) AbstractAccessLogValve.java:624
  org.apache.catalina.core.StandardEngineValve.invoke(Request, Response) StandardEngineValve.java:87
  org.apache.catalina.connector.CoyoteAdapter.service(Request, Response) CoyoteAdapter.java:349
  org.apache.coyote.http11.Http11Processor.service(SocketWrapperBase) Http11Processor.java:783
  org.apache.coyote.AbstractProcessorLight.process(SocketWrapperBase, SocketEvent) AbstractProcessorLight.java:66
  org.apache.coyote.AbstractProtocol$ConnectionHandler.process(SocketWrapperBase, SocketEvent) AbstractProtocol.java:798
  org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun() NioEndpoint.java:1434
  org.apache.tomcat.util.net.SocketProcessorBase.run() SocketProcessorBase.java:49
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) ThreadPoolExecutor.java:1149
  java.util.concurrent.ThreadPoolExecutor$Worker.run() ThreadPoolExecutor.java:624
  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() TaskThread.java:61
  java.lang.Thread.run() Thread.java:748

But I can't relate this to an specific component of the html. ¿How can I identify which is the component causing the issue? ¿Or is more like a general problem of the app?

We are using JSF 2.3, java 8, primefaces 8.0 and tomcat 8.5

dssof
  • 117
  • 6

0 Answers0