9 Replies Latest reply on Apr 24, 2004 7:06 AM by slaboure

    JBoss 3.2.3 Vs Weblogic 8.1 SP2

    yohanfer

      Hello everyone,

      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 9.2.0.2 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.

      Yohan Fernando





        • 1. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
          slaboure

          What performance do you get by disabling clustering completely? Just for comparison.

          • 2. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
            slaboure

            Also:
            - were you using synchronous or asynchronous replication of http sessions?
            - what kind of replication trigger do you use in jboss-web.xml (GET, GET_AND_SET, etc.)

            Have you disabled transaction-service.xml debug mode?

            Have you removed Tomcat JSP hot-recompilation (to detect JSP page changes)?

            Had you correctly sized the Tomcat thread pool for mod_jk2 and the size of the datasource pool for Oracle?

            just a few quick thoughts.

            Cheers,

            sacha

            • 3. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
              yohanfer

              Hi Sacha,

              Thanks for your quick reply.

              The only clustering I have enabled ( as far as I know) is the HttpSession replication. I turned this off by removing the setting in the web.xml for the non-clustered test. I haven't set any EJBs to be clusterable.

              The results of the non-clustered was 0.579 vs 0.601 sec/page for clustered.

              As far as I know, I'm using synchronous (I didn't know you could do asynchronous) using the SnapshotMode to instant in /server/all/deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml

              I haven't explicitly given any settings for a replication trigger. I presume its using the default (dont know what it is). Is this given in the jboss-web.xml in WEB-INF/lib of the application?

              The thread pool for mod_jk2 is maxProcessors="75" which is the default. The oracle pool size min is 10 and max is 200. From past experience on weblogic we have not gone over 20-30 connections during heavier tests.

              Is there anyway I can monitor this stuff real-time while the tests are running so I have a better Idea of where the problems could lie?

              I will make the changes on the hot-procompilation and transaction debugging and post the results here.

              Thanks

              Yohan


              • 4. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                slaboure

                Hello Yohan,

                At least, it seems to indicate that clustering has no bad effect (removing from web.xml deactivates it), this is good.

                Concerning the thread pool, DO increment it to 100 or 200 (as you have 100 concurrent users, you should have at least 100 threads to serve them) and make sure this is the case BOTH in Tomcat AND Apache (you should have the same number of threads on both sides, or in any case tomcat>Apache)

                Do you use entity beans?

                Cheers,

                sacha

                • 5. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                  yohanfer

                  Hi Sacha,

                  Well, the ideal situation for clustering is the instant replication mode for the minimal data loss. The values for that vs non-clustered is actually 1.19 vs 0.579 sec/page. The previous values were for a 2 second interval replication vs non-clustered.

                  About the threads, I agree about thread sizes in principle, but weblogic handles the same traffic with 15 threads!

                  In the process of doing the changes you suggested. Will get back to you.

                  Thanks

                  Yohan

                  PS . Can you let me know how to turn on asynchronous replication?

                  • 6. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                    rmaucher

                    About web tier performance: the default configuration isn't very optimal with JBoss 3.2.3. This is improved in 3.2.4 RC 1 (along with the significantly faster Tomcat 5), but by default, JBoss is more in "development" configuration than "production".

                    Some basic steps:
                    - Disable logging for the web container (the default is too high)
                    - Disable access logging (if WL doesn't have access logging)
                    - Disable Jasper development mode, or, even better, precompile your webapp (if you do that, be sure to package each webapp in a separate EAR, or use the Tomcat classloader)
                    - Disable name resolution on the connector (in conjunction with the access logging, this can hurt bad)

                    This is mostly the same as for putting Tomcat in production, so you can refer to the Tomcat docs.

                    • 7. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                      yohanfer

                      Hello people,

                      Just to give you some info on my progress, I've done a lot of changes that you have suggested like making Tomcat run in production mode, making sessions replicate ASYNC etc....

                      The new version of the clustering doc (edition 7) is excellent in the aspect that it covers a lot of these settings which were missing in the previous version (edition 6). Good work Sacha!

                      It only made a small improvement, about 0.9 vs 1.19 sec/page before. I'm now trying JBoss 3.2.4RC1 with Tomcat 5 and writing some new tests. Need to change the app a bit to get it to work so it will take some time.

                      Does anyone know when JBoss 3.2.4 final release date is? This would again dictate whether we go with JBoss or not.

                      • 8. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                        slaboure

                        ok, let us know, it becomes better. But we are still way behind. Do you have a way to measure individual times i.e. time of the servlet layer, EJB layer, DB access, etc. and check which layers costs time?

                        3.2.4 should be released in 10 days.

                        • 9. Re: JBoss 3.2.3 Vs Weblogic 8.1 SP2
                          slaboure

                          So, what is the feedback on that yohanfer?