I have been performance tuning my application and using JProbe have run across some strangeness that is probably related to a configuration setting. I have a single .JSP page that connects to a stateful remote session bean, and invokes a call. I am using JMeter to simulate 10 inbound connections each executig a 2 pages 2 times. Each .JSP page has a different instance of the same SessionBean. Using JProbe, I have profiled the stack to see where time is lost.
I see my the invocation of my Sessionbean method --
DynamicUIProcess.executeComponentUI() - 66 calls - 1,014,201 ms
then the stack processes through JBoss --
then finally my sessionbean:
LoadTestpoBean.executeComponentUI() 66 calls, 753,144 ms
There is a 261,060 ms time difference of execution which must have been lost in the JBoss code. This is 3955 ms per call that is being added on.
My actual session bean extends the LoadTestPOBean and implements the DynamicUIProcess interface. I create the session bean and access it in my servlet prior to processing the .JSP page.
This is running un a 2 processor Winows Server 2003 box. Using JBoss 3.2.3 w/ tomcat 4.1, the Inet Opta driver for connectivity to MSSQL. The DB does not see much activity and the CPUs never show more than 20% use.
33 of those 66 connections are making PurchaseOrder entity beans. POEntityBeans use CMP and CMR to connect to POLineItem entity beans also using CMP. Activity at the CMP layer is minimal and the times I see once back in to my code are all good.
Any help would be greatly appreciated.