Our company is looking into moving our achitecture to support JBoss. Therefore I have conducted a simple head-to-head performance test with our current application server (Weblogic server 8.1 SP2) and the current stable release of JBoss ( Ver 3.2.3/Tomcat4.1.29).
The application is a 'standard' 3-tier JSP web application. It uses EJBs in some places, but these were not included in the tests. It uses JDBC SQL queries to access the database which is the only datastore.
The hardware used were 2 x 2.8 GHz P4 with Hyperthreading Intel machines running Fedora core 1 Linux as the JBoss Cluster machines. The back-end database was a Twin-CPU Oracle 184.108.40.206 database running on Redhat Linux 7.3. A front-end machine was used to server static content running Apache 2.0.48 running both mod_jk2.0.2 /and mod_wl.so These 4 machines are connected on a single 100Mbps ethernet network.
Both application servers had the following VM settings,
-server -Xms256m -Xmx256m -XX:NewSize=96m -XX:MaxNewSize=96m -XX:SurvivorRatio=4 -XX:+UseParNewGC
The tests were run using OpenSTA running on a Windows 2000 machine running 100 concurrent users. The tests on JBoss were run with several configurations. One with instant replication (using the SnapshotMode argument to 'instant') and with interval replication (using the SnapshotMode argument to 'interval') set to 2000 ms. Also a test was done with no replication.
The results were as follows
Weblogic server - 0.161 sec/page
JBoss cluster (with instant replication) - 1.19 sec/page
JBoss cluster (with 2 sec replication interval) - 0.601 sec/page
JBoss cluster (with no replication) - 0.579 sec/page
During the tests for JBoss, there was a very high load on the network switches for multicast in the instant replication test. This was not seen on weblogic. The application code run on all the tests were identical, as was the hardware that it was run on.
Looking at the results, weblogic seems to be 10 times faster than the JBoss/Tomcat bundle. At first I suspected the multicast overhead, but then there was little difference in the 2 sec replication interval and non-replicated tests. This points to performance problems on the tomcat container.
As a newbie to JBoss, is there anything I have missed that I can do to improve the performance of JBoss in this configuration? The key elements for me are HttpSession clustering with minimal loss of state (ideally instant replication,which in my opinion is not scalable, or a very small interval for replication).
With this kind of performance, It is difficult for me to argue moving to JBoss based on these figures. Also this would be a problem for any JSP web application which is session intensive and needs HttpSession clustering (or not) and needs to compete with a commercial application server like Weblogic.
Any help will be greatly appreciated.