Tuesday, September 01, 2009

J2EE Application Server Windows Vs. Linux Benchmark

Old debt of mine since my last post almost two years ago while comparing performance of Oracle Application Server, which is a J2EE Server, running on Windows and on Linux.

I won't post the full document which is about 30 pages but I will summarize things as OAS / IAS is deprecated after Oracle acquired BEA WebLogic Application Server.

To the point - we have build a Java simple application doing few things:
  1. I/O test:
    Reading a file located on the system disk (server side) and displaying its contents to the client.
  2. DB test:
    Executing query to an Oracle DB and displaying the result to the client.
  3. HTML test:
    Simple HTML page containing some text an few images in different sizes.
  4. Memory Leak test:
    Memory leak, by adding objects to the session and not releasing them.
We used HP's Load Runner and run some users doing each of the above actions, each action in a separate test.

At first we found that Windows and Linux (JVM) crushed and fail-back in the exact same manner when dealing with the Memory leak scenario.
The same with the queries to Oracle DB scenario (bottle-neck was with [UPDATE LATER]).

HTML test was the first time we finally got different results.
After adjusting the Apache.conf few times we got an amazing result,
Windows-based server couldn't keep up with over 300 concurrent users (bottle-neck was CPU) while in the exact same scenario Linux-based server got 1000 concurrent users (and CPU was less then 75%) !

Encouraged with our last results we continue to the last test, I/O test.
We found that Linux can handle requests much faster when parsing the exact same file with the same amount of concurrent users.
[UPDATE LATER]...

Our final conclusion is that J2EE performance is far better on Linux env rather than on Winodws env. It is extremely obvious with the HTML test (which is actually not J2EE) that Apache on Linux can handle four-times throughput than on Windows.

Feel free to ask for more information if you feel something is missing.