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

Daniel Lichtenberger (JIRA) jira-events at lists.jboss.org
Wed Jul 29 08:30:29 EDT 2009


Very bad startup performance after update from 3.2.2 to 3.3.1
-------------------------------------------------------------

                 Key: RF-7621
                 URL: https://jira.jboss.org/jira/browse/RF-7621
             Project: RichFaces
          Issue Type: Bug
          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


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/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list