JBoss Performance.
lrem Sep 26, 2001 7:15 AMHi there,
I have a question about JBoss Performance. We have been looking at JBoss as a possible Application Server but seem to have come across a bottleneck.
Running OptimizeIt, we have found that there appears to be a lot of time spent in the CacheKey class which can be shown best by the following Output.
54.26% - 152249 ms - $Proxy18.getAttributeDefinitions() 54.26% - 152249 ms - org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke() 54.26% - 152249 ms - org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer() 54.26% - 152249 ms - org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke() 54.26% - 152249 ms - org.jboss.ejb.StatelessSessionContainer.invoke() 54.26% - 152249 ms - org.jboss.ejb.plugins.LogInterceptor.invoke() 54.26% - 152249 ms - org.jboss.ejb.plugins.SecurityInterceptor.invoke() 54.25% - 152239 ms - org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke() 54.25% - 152239 ms - org.jboss.ejb.plugins.TxInterceptorBMT.invoke() 54.25% - 152239 ms - org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke() 54.25% - 152239 ms - java.lang.reflect.Method.invoke() 54.25% - 152239 ms - com.telelogic.vbs.vm.beans.VMSchemaBean.getAttributeDefinitions() 54.17% - 151999 ms - $Proxy31.findByPrimaryKey() 54.16% - 151989 ms - org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invoke() 54.16% - 151979 ms - org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invokeHome() 54.16% - 151979 ms - org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome() 54.08% - 151759 ms - org.jboss.ejb.EntityContainer.invokeHome() 54.08% - 151759 ms - org.jboss.ejb.plugins.LogInterceptor.invokeHome() 54.03% - 151619 ms - org.jboss.ejb.plugins.SecurityInterceptor.invokeHome() 54.03% - 151619 ms - org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome() 54.03% - 151619 ms - org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions() 54.03% - 151619 ms - org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext() 54.03% - 151619 ms - org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome() 54.03% - 151619 ms - org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome() 54.03% - 151619 ms - org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome() 54.03% - 151619 ms - java.lang.reflect.Method.invoke() 54.03% - 151619 ms - org.jboss.ejb.EntityContainer.find() 53.95% - 151379 ms - org.jboss.ejb.plugins.CMPPersistenceManager.findEntity() 52.85% - 148293 ms - org.jboss.ejb.plugins.EntityInstanceCache.createCacheKey() 52.84% - 148273 ms - org.jboss.ejb.CacheKey.<init>() 39.69% - 111375 ms - java.rmi.MarshalledObject.<init>() 39.37% - 110485 ms - java.io.ObjectOutputStream.writeObject() 39.37% - 110485 ms - java.io.ObjectOutputStream.outputObject() 39.36% - 110465 ms - java.io.ObjectOutputStream.outputClassDescriptor() 20.5% - 57534 ms - java.io.ObjectOutputStream.outputClassDescriptor() 20.48% - 57484 ms - sun.rmi.server.MarshalOutputStream.annotateClass() 20.33% - 57054 ms - java.rmi.server.RMIClassLoader.getClassAnnotation() 20.33% - 57054 ms - sun.rmi.server.LoaderHandler.getClassAnnotation()
As you can see, 54% of the thread's time appears to be in the CacheKey class.
Any ideas as to why this bit of code is so slow?
regards,
Lachlan