0 Replies Latest reply on Oct 4, 2016 9:34 AM by krishna jasty

    Performance Issue with JBOSS EAP6.4 Interceptors during web services testing

    krishna jasty Newbie

      We are using Jboss eap6.4 for webservices testing, jmeter is used for running the load test.

      The response times are good for 50 users (<1 sec), where as for 100 users the response times are very bad (>20 seconds).

       

      To analyze the issue we have several thread dumps and observed as follows.

      All the threads locked for some time during PhaseInterceptorChain as shown below thread stack. This is the case across several threads.

       

      PhaseInterceptorChain is a jboss interceptor with synchronized method with a call to ServiceInvokerInterceptor.handleMessage(), which is also a synchronized method.

      Though this thread is communicating with JDBC, we are sure that which spent just 10ms during SQL execution.

       

      Is there a way to skip/avoid invocation of these interceptors?

       

      "http-/xx.xx.xx.xx:29000-103" daemon prio=10 tid=0x00007ff3ec691800 nid=0x6ea9 runnable [0x00007ff32b1ec000]

         java.lang.Thread.State: RUNNABLE

        at java.net.SocketInputStream.$$YJP$$socketRead0(Native Method)

        at java.net.SocketInputStream.socketRead0(SocketInputStream.java)

        at java.net.SocketInputStream.read(SocketInputStream.java:152)

        at java.net.SocketInputStream.read(SocketInputStream.java:122)

        at oracle.net.ns.Packet.receive(Packet.java:308)

        at oracle.net.ns.DataPacket.receive(DataPacket.java:106)

        at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:324)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:268)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:190)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:107)

        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)

        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)

        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)

        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:350)

        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)

        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)

        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)

        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)

        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)

        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)

        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)

        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)

        - locked <0x000000060ea2b628> (a oracle.jdbc.driver.T4CConnection)

        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)

        at org.jboss.jca.adapters.jdbc.CachedPreparedStatement.executeQuery(CachedPreparedStatement.java:107)

        at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:462)

        at com.tcs.mastercraft.mctype.DebuggableStatement.executeQuery(DebuggableStatement.java:283)

        at sun.reflect.GeneratedMethodAccessor546.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269)

        at sun.reflect.GeneratedMethodAccessor1869.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

        at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)

        at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)

        at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)

        at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.as.webservices.deployers.WSComponentInstanceAssociationInterceptor.processInvocation(WSComponentInstanceAssociationInterceptor.java:49)

        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)

        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)

        at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)

        at org.jboss.as.webservices.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:129)

        at org.jboss.wsf.stack.cxf.JBossWSInvoker.performInvocation(JBossWSInvoker.java:177)

        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)

        at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237)

        at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69)

        at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:146)

        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)

        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)

        at java.util.concurrent.FutureTask.run(FutureTask.java:262)

        at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)

      at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107)

        - locked <0x00000006fc9aba08> (a org.apache.cxf.interceptor.ServiceInvokerInterceptor$2)

        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)

        - locked <0x00000006fc94b388> (a org.apache.cxf.phase.PhaseInterceptorChain)

        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)

        at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:249)

        at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:97)

        at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:131)

        at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:88)

        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)

        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)

        at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:136)

        at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)

        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)

        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)

        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)

        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854)

        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)

        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)

        at java.lang.Thread.run(Thread.java:745)