[richfaces-issues] [JBoss JIRA] Resolved: (RF-7621) Very bad startup performance after update from 3.2.2 to 3.3.1

Alexander Smirnov (JIRA) jira-events at lists.jboss.org
Thu Jul 22 15:10:40 EDT 2010


     [ https://jira.jboss.org/browse/RF-7621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Smirnov resolved RF-7621.
-----------------------------------

    Fix Version/s:     (was: Future_4.X)
       Resolution: Out of Date


RichFaces 3.3 has much more components with complicated configuration ( like rich:editor ) that takes more time in JSF initialization code.

> Very bad startup performance after update from 3.2.2 to 3.3.1
> -------------------------------------------------------------
>
>                 Key: RF-7621
>                 URL: https://jira.jboss.org/browse/RF-7621
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: performance
>    Affects Versions: 3.3.1
>         Environment: Linux, Java 1.6.0_14, JBoss 4.2.3.
> JBoss opts:
>   JAVA_OPTS: -Dprogram.name=run.sh -server  -Djava.net.preferIPv4Stack=true -Djdbc.connection.debug=true -Djava.awt.headless=true -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Xmx1024m -Xms128m -XX:MaxPermSize=200m -XX:+CMSClassUnloadingEnabled -Djava.net.preferIPv4Stack=true
>            Reporter: Daniel Lichtenberger
>            Assignee: Alexander Smirnov
>            Priority: Minor
>
> After updating from RichFaces 3.2.2 to 3.3.1, I experience a *very* steep drop in startup performance of JBoss 4.2. With an EAR with 5 embedded WAR application, JBoss startup time went from 25 to over 40 seconds (RichFaces is stored in the EAR lib folder and shared by all WARs). The effect is even worse when the Yourkit Java Profiler is attached. The deployment of a WAR pegs one core at 100% for about 5 seconds, as opposed to less than 1 second before.
> When I replace the RF 3.3.1 JARs with the 3.2.2 ones, the startup performance goes back to normal. When I pause the JVM during the WAR startup with RF 3.3, it is always doing some kind of initialization for RichFaces, so I suspect it is a combination of RichFaces changes and JBoss classloading performance. Here's a sample stacktrace from the debugger:
> {code}main at 3, priority=5, in group 'jboss', status: 'RUNNING'
> 	  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> 	  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> 	  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> 	  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
> 	  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1,273)
> 	  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1,204)
> 	  at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
> 	  at org.apache.commons.digester.Rule.begin(Rule.java:175)
> 	  at org.apache.commons.digester.Digester.startElement(Digester.java:1,563)
> 	  at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source:-1)
> 	  at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source:-1)
> 	  at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source:-1)
> 	  at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source:-1)
> 	  at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source:-1)
> 	  at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source:-1)
> 	  at org.apache.xerces.parsers.XMLParser.parse(Unknown Source:-1)
> 	  at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source:-1)
> 	  at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source:-1)
> 	  at org.apache.commons.digester.Digester.parse(Digester.java:1,887)
> 	  at org.ajax4jsf.resource.ResourceBuilderImpl.registerConfig(ResourceBuilderImpl.java:209)
> 	  at org.ajax4jsf.resource.ResourceBuilderImpl.registerResources(ResourceBuilderImpl.java:153)
> 	  at org.ajax4jsf.resource.ResourceBuilderImpl.init(ResourceBuilderImpl.java:224)
> 	  at org.ajax4jsf.renderkit.ChameleonRenderKitFactory.<init>(ChameleonRenderKitFactory.java:62)
> 	  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java:-1)
> 	  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> 	  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 	  at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 	  at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:560)
> 	  at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:459)
> 	  at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:260)
> 	  at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:186)
> 	  at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:131)
> 	  at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202)
> 	  at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:195)
> 	  at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:71)
> 	  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3,856)
> 	  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4,361)
> 	  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:790)
> 	  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:770)
> 	  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)
> 	  at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.apache.catalina.core.StandardContext.init(StandardContext.java:5,312)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)
> 	  at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:301)
> 	  at org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:104)
> 	  at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:375)
> 	  at org.jboss.web.WebModule.startModule(WebModule.java:83)
> 	  at org.jboss.web.WebModule.startService(WebModule.java:61)
> 	  at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	  at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	  at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source:-1)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	  at $Proxy0.start(Unknown Source:-1)
> 	  at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	  at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source:-1)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	  at $Proxy44.start(Unknown Source:-1)
> 	  at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	  at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
> 	  at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
> 	  at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)
> 	  at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
> 	  at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	  at $Proxy45.start(Unknown Source:-1)
> 	  at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1,025)
> 	  at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1,015)
> 	  at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
> 	  at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
> 	  at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source:-1)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	  at $Proxy9.deploy(Unknown Source:-1)
> 	  at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
> 	  at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
> 	  at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
> 	  at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
> 	  at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	  at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	  at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source:-1)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	  at $Proxy0.start(Unknown Source:-1)
> 	  at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	  at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source:-1)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	  at $Proxy4.start(Unknown Source:-1)
> 	  at org.jboss.deployment.SARDeployer.start(SARDeployer.java:304)
> 	  at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1,025)
> 	  at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
> 	  at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
> 	  at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
> 	  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	  at java.lang.reflect.Method.invoke(Method.java:597)
> 	  at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	  at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	  at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	  at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	  at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	  at $Proxy5.deploy(Unknown Source:-1)
> 	  at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
> 	  at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
> 	  at org.jboss.Main.boot(Main.java:200)
> 	  at org.jboss.Main$1.run(Main.java:508)
> 	  at java.lang.Thread.run(Thread.java:619)
> {code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list