0 Replies Latest reply on Nov 21, 2008 9:38 PM by Abhijeet Mohanty

    Performance Test Result of Jboss ESB -- Failing for 100 conc

    Abhijeet Mohanty Newbie

      I am trying to benchmark performance of JBOSS ESB in a simple test scenario. And 90% of my test cases fail with exception and overall tests are running very slow as well.

      Following is my scenario -

      SOAP Client ---->jbr listener ---> ESB Actions ----> External Web Service

      The external web service is a "echo" service which takes byte[] or a string and returns back the same to the caller. The following is my test scenario -

      1. I am using 1 KB of message from SOAP client
      2. 100 concurrent users each executing 10 runs of the same test cases

      My client is making a synchronous call. I have configured jbr-listener to have 10 threads .

      Problem is 90% of my test cases are failing with the following exception. Also overall time to execute the test cases are 10 times slower than actually calling the webservice directly. -

      Java exception calling TestRunner
      File "C:\Abhijeet\Work\grinder-3.1\examples\jaxrpcpayload.py", line 51, in __call__
      Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
      at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
      at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
      at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
      at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
      at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
      at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
      at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
      at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
      at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
      at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
      at org.apache.axis.client.Call.invoke(Call.java:2767)
      at org.apache.axis.client.Call.invoke(Call.java:2443)
      at org.apache.axis.client.Call.invoke(Call.java:2366)
      at org.apache.axis.client.Call.invoke(Call.java:1812)
      at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.python.core.PyReflectedFunction.__call__(Unknown Source)
      at org.python.core.PyMethod.__call__(Unknown Source)
      at org.python.core.PyObject.__call__(Unknown Source)
      at org.python.core.PyInstance.invoke(Unknown Source)
      at net.grinder.engine.process.jython.InstrumentedPyJavaInstanceForJavaInstances.access$201(InstrumentedPyJavaInstanceForJavaInstances.java:48)
      at net.grinder.engine.process.jython.InstrumentedPyJavaInstanceForJavaInstances$2.call(InstrumentedPyJavaInstanceForJavaInstances.java:93)
      at net.grinder.engine.process.TestData$Dispatcher.dispatch(TestData.java:229)
      at net.grinder.engine.process.TestData$DispatcherHolder.dispatch(TestData.java:166)
      at net.grinder.engine.process.TestData.dispatch(TestData.java:102)
      at net.grinder.engine.process.jython.JythonScriptEngine$PyDispatcher.dispatch(JythonScriptEngine.java:463)
      at net.grinder.engine.process.jython.InstrumentedPyJavaInstanceForJavaInstances.invoke(InstrumentedPyJavaInstanceForJavaInstances.java:90)
      at org.python.pycode._pyx0.__call__$2(C:\Abhijeet\Work\grinder-3.1\examples\jaxrpcpayload.py:51)
      at org.python.pycode._pyx0.call_function(C:\Abhijeet\Work\grinder-3.1\examples\jaxrpcpayload.py)
      at org.python.core.PyTableCode.call(Unknown Source)
      at org.python.core.PyTableCode.call(Unknown Source)
      at org.python.core.PyTableCode.call(Unknown Source)
      at org.python.core.PyFunction.__call__(Unknown Source)
      at org.python.core.PyMethod.__call__(Unknown Source)
      at org.python.core.PyObject.invoke(Unknown Source)
      at org.python.core.PyInstance.__call__(Unknown Source)
      at org.python.core.PyObject.__call__(Unknown Source)
      at net.grinder.engine.process.jython.JythonScriptEngine$JythonWorkerRunnable.run(JythonScriptEngine.java:331)
      at net.grinder.engine.process.GrinderThread.run(GrinderThread.java:119)
      at java.lang.Thread.run(Thread.java:595)


      My question is -

      1. Is there some optimized configuration and performance tuning tips that I am missing.

      I am putting my jboss-esb.xml for reference here -
      ============================================
      <?xml version = "1.0" encoding = "UTF-8"?>



      <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"
      jndi-URL="jnp://usphxdlh02.spe.sony.com:1099" jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
      jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces">

      <jms-bus busid="quickstartGwChannel">
      <jms-message-filter
      dest-type="QUEUE"
      dest-name="queue/eclipse_quickstart_helloworld_Request_gw"
      />
      </jms-bus>
      <jms-bus busid="quickstartEsbChannel">
      <jms-message-filter
      dest-type="QUEUE"
      dest-name="queue/eclipse_quickstart_helloworld_Request_esb"
      />
      </jms-bus>

      </jms-provider>

      <!-- <jbr-provider name="JBR-Http" protocol="http" host="usphxdlh02.spe.sony.com" >
      <jbr-bus busid="Http-1" port="8765" />
      </jbr-provider>-->

      <jbr-provider name="JBR-Http2" protocol="http" host="usphxdlh02.spe.sony.com" >
      <jbr-bus busid="Http-2" port="18765"/>
      </jbr-provider>
      <!-- <jbr-provider name="JBR-Socket" protocol="socket" host="usphxdlh02.spe.sony.com">
      <jbr-bus busid="Socket-1" port="18888" />
      </jbr-provider>-->






      <jbr-listener name="Http-Gateway"
      busidref="Http-2"
      maxThreads="10"
      is-gateway="true"
      />
      <!-- <jbr-listener name="Socket-Gateway" busidref="Socket-1" is-gateway="true" maxThreads="1"/>-->

      <jms-listener name="Esb-UnAware" busidref="quickstartGwChannel" maxThreads="10" is-gateway="true"/>
      <jms-listener name="Esb-Aware" busidref="quickstartEsbChannel" maxThreads="10" />


      <!--

      -->

      <!--

      -->


      <!-- -->
      <!-- -->
      <!-- -->
      <!-- -->
      <!-- -->



      <!--

      -->







      ============================================

      Any direction should help..

      Thanks
      Abhijeet