Which is faster – WebSphere or WebLogic? I think this is a wrong question to ask because it all depends on what is your goal. Most enterprise IT systems are trying to handle maximum number of user requests (transactions) on the lowest amount of software and hardware at the lowest cost. This is called price/performance. If a plane can fly at 600 miles per hour and carry 200 passengers, but a train can travel at 150 miles per hour (I wish we had those in US) and can carry 2000 passengers – which is better? I don’t know. You need to calculate the cost of the ticket, check-in time, safety, etc. to be able to answer that question. Fortunately it is easy to compare price performance ratios for application servers. What we need to do is to measure the overall system performance, calculate overall cost of the system and we can come up with the price/performance characteristic of a given system.
IBM has a long history of performance leadership with WebSphere Application Server and has been leading most public application server benchmarks since 1999. Here are just a few examples:
- IBM was first to publish results to the SPECjAppServer2001 and SPECjAppServer2002 benchmarks and held #1 position for significant periods of time. For both benchmarks Oracle did not publish anything for more than a year after IBM’s first publications.
- IBM was the first and only to publish a SPECjAppServer2002 Distributed result, which included distributed transactions. None of the other vendors have ever published a result in this category.
- IBM was the first to publish a SPECjAppServer2004 result. It took BEA well over a year to publish their first result with WebLogic and took Oracle two and a half years to publish theirs (with now defunct OC4J). Until recently Oracle continued to publish new results in the old benchmark SPECjAppServer2004 and claimed “performance leadership”. Why bother publishing results in the antiquated benchmark when nobody, but Oracle seems to be interested in EJB 2.x performance numbers?
- In January 2010 IBM was the first vendor to publish, and for entire 2010 held #1 position in the SPECjEnterprise2010 benchmark with the result of 15,829.86 EjOPS (Enterprise jAppServer Operations per Second). Oracle has published their first result almost a year after IBM (do you notice the pattern?).
Enough history. Finally we get to the main subject in this post.
In August 2011 Oracle published the result with higher overall number of EjOPS, however cost per transaction is 1.88 times higher than IBM configuration as can be seen on the diagram below. Oracle threw more hardware and software into this benchmark to get larger overall EjOPS number, but it is like flying multiple planes and counting passengers in all of them. Customers care about the cost per transaction – in other words price/performance, not the maximum size of the environment (which you can also get if you run multiple IBM systems).
There are some things that are not tested in the SPECjAppserver2010 benchmark and for real world applications they can make a big difference. For example, WebSphere Application Server includes a Dynacache capability that allows for very flexible HTML, Servlet, JSP and SOAP/HTTP caching without modifications to the source application. This cache can also be dynamically replicated to the edge of the network using WebSphere Edge or extended via WebSphere eXtreme Scale. WebLogic Server has limited JSP caching available and requires manual editing of the source code to put in JSP tags. This editing requires designers of the applications to be overtly aware of the cache, while in WebSphere Application Server it is a purely administrative task and developers do not have to do anything special to enable it. Customer and internal IBM tests demonstrated that the IBM WebSphere Dynacache can help improve performance of some web applications by a significant amount (2x and 4x is not uncommon, but it all depends on the application). I must mention that Oracle Coherence product does not fix the lack of dynamic content caching for presentation tier and SOAP/HTTP in WebLogic Server.
Another capability not tested by the SPECjAppServer2010 is the replication of HTTPSession state. While WebLogic Server does supports HTTPSession failover, it does not do it efficiently. Unlike WebSphere Application Server, WebLogic Server does not support granular updates to HTTPSession, resulting in significant network and CPU overhead and slowing down the entire system.
WebSphere Application Server has a number of performance optimizations, including the IBM Java Runtime which is optimized for different hardware architectures including special optimizations done for the latest IBM POWER7 platform; fast Web services stack and XML processing; caching at every level of processing; special optimizations performed for DB2 connectivity and session persistence; and finally highly optimized JPA persistence engine. You can find performance tutorials and best practices for WebSphere Application Server here.
In the next article we will discuss standards support and programming model extensions for WebSphere Application Server and Oracle WebLogic Server. Stay tuned.
1. Cost per transaction is derived metric calculated based on the total cost of the System Under Test, including hardware and software costs over the 3 year period.
2. Oracle WebLogic Server 11g and Oracle Database 11g Release 2 with Oracle Real Application Clusters and Oracle Solaris running on a four-node SPARC T4-4 cluster, each system with four SPARC T4 3GHz processors, (128 core app server, 64 core db server), 40,104.86 SPECjEnterprise2010 EjOPS vs. WebSphere Application Server V8 on IBM System x3650 M2 and DB2 on IBM BladeCenter HS22, (8 core app server, 12 core db server), 2,341.12 SPECjEnterprise2010 EjOPS.
3. Sources: http://www.spec.org. Results current as of 11/3/11.