1. AdroitLogic
  2. esbperformance

Source

esbperformance / jboss / README.txt

Copy binary artifacts from the deploy directory to jbossesb-server-4.10/server/default/deploy
    
    $ cd ~/resources/esbperformance/jboss
    $ cp deploy/* {JBOSSESB_HOME}/server/default/deploy

e.g. 
    $ cd ~/resources/esbperformance/jboss
    $ cp deploy/* /home/ubuntu/esbs/jbossesb-server-4.10/server/default/deploy/

To build from source, copy quickstart directory contents into jbossesb-server-4.10/samples/quickstart and compile each with ant

Edit the ./server/default/deploy/jboss-web.deployer/server.xml file to tune the Tomcat thread pool, connections timeout and the accept count as follows

<!-- INCREASE maxThreads AND connectionTimeout and specify address-->
<Connector port="8080" address="0.0.0.0"    
maxThreads="300" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="120000" disableUploadTimeout="true" />

Turn off logging totally (as per [1] although this may not be possible on a real production environment) by editing ./server/default/conf/jboss-log4j.xml as follows:

<root>
<appender-ref ref="CONSOLE"/>
<!--COMMENT THIS LINE - appender-ref ref="FILE"/-->
</root>

<!-- UNCOMMENT THE FOLLOWING LINES - Limit JBoss categories-->
<category name="org.jboss">
<priority value="INFO"/>
</category>

Turn off hot deployment by disabling the directory scanning by editing ./server/default/conf/jboss-service.xml as follows:

<!-- SET TO "false" - A flag to disable the scans -->
<attribute name="ScanEnabled">false</attribute>

Increase heap memory allocated to the JVM by editing ./bin/run.conf as follows:

JAVA_OPTS="-Xms2048m -Xmx2048m -XX:PermSize=200M ......


Start the JBossESB by executing the start script as follows, and check for any warnings or errors

    $ cd {JBOSSESB_HOME}/bin
    $ ./run.sh
...
16:09:56,025 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 37s:914ms

Running the complete performance test

    $ cd ~/client-scripts
    $ ./loadtest-jbossesb.sh > jbossesb-4.10.log

Notes:
======

At a concurrency level of 320 users while running the CBR Proxy service, something really went wrong made the ESB unable to process any further requests. On an earlier previous run which produced the same effect, the following error messages could be seen on the log.

20:05:40,699 INFO  [ServiceInvoker] Unresponsive EPR: InVMEpr [ PortReference < <wsa:Address invm://7365727669636524242424242424242424242443425250726f7879/false?false#10000/>, <wsa:ReferenceProperties jbossesb:passByValue : false/> > ] for message: header: [  ]
20:05:54,371 INFO  [ServiceInvoker] Delivering message [header: [  ]] to DLQ.
20:05:54,389 ERROR [[http-cbr-body]] Servlet.service() for servlet http-cbr-body threw exception
org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [service:CBRProxy].
	at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:427)
	at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)
	at org.jboss.soa.esb.listeners.gateway.http.HttpGatewayServlet.processServiceRequest(HttpGatewayServlet.java:230)
	at org.jboss.soa.esb.listeners.gateway.http.HttpGatewayServlet.service(HttpGatewayServlet.java:194)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)


References

[1] JBossESB Performance Tuning - http://community.jboss.org/wiki/JBossESBPerformanceTuning