|
|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP LINKS YOU MUST CLICK ON Trends
Comparing Apache Tomcat Performance Across Platforms
Part 1: Performance and distinct error handling under memory load
By: Frank Ziglar
Apr. 28, 2006 06:30 PM
Digg This!
Page 1 of 2
next page »
We have measured performance information to distinguish the differences between the Windows and Linux platforms. Given comparable hardware we found the performance differences almost trivial.
Sun's release of its J2EE specifications has been followed by enthusiastic developers crafting powerful applications that can be seen on the Web in businesses of every size. The result is one very hot topic continually focused on by many developer groups, but mature enough to be well known in all aspects of the industry. Some of the first questions that must be asked with any new project remain: what is the best starting point, and how should this application be deployed? Here, we'd like to provide some guidance as to what trade-offs can be expected before that decision is made. Earlier editions of this report presented some comparative results between different servlet containers. The response and feedback have been tremendous, and there's been no shortage of suggestions for comparing function X against Y and Z. However, with J2EE delivering platform-independence, many people (including myself) have gotten interested in determining just how significant a difference there is between the platforms. So we'll look at one of the most popular servlet containers, Apache Tomcat, operating on the two most common platforms in general use, Windows and Linux. For simplicity's sake, this article will be broken into two parts. Here, we'll discuss a simple scenario that leads the servers quickly into a performance limitation. In Part 2, we'll examine the performance of the platforms after this limitation is lifted.
Testing Goals
Difficulties of Benchmarking Remember too that numerical values have a margin of error. When we compare timing measurements that are nearly equal, the faster and slower responses can easily exchange places with the slightest fluctuation. Upsets can derive from practically any cause imaginable. One source, for instance, might be whether software configurations include or exclude background/idle processes. Minor revision changes in loaded applications/libraries can have the same effect. On the hardware side, the next faster or slower processor can affect the processor-to-IO performance ratio, which can upset subtleties in how the platform manages internal semantics.
Raw Numbers vs Relative Performance It may seem obvious to some, but it's important to reinforce this point: If the data indicates that Server X can serve 200 hits/sec with an average duration of under two seconds, it doesn't correlate to the number of hits/sec that your application will be capable of. The data presented here for one server is only useful for comparison against another under the identical test conditions of our test lab. Also note that the hardware used for the server in these tests is not a state-of-the-art configuration.
Reproducible Results
Configuration By using default settings, our test results can be interpreted more broadly than had we tuned our application server specifically for our test app. And then too there's practically an infinite number of permutations of options related to server and servlet container's functionality. Evaluating permutations of even a few of these settings can make our results too long to digest. Third, if the same functionality can be obtained by setting twice as many options (hence taking twice as much time to configure), the question of testing fairness could be argued.
Server Software
Server Hardware
Testing Laboratory During each test the server not being tested acted as the test controller. The load controller used five additional workstations for additional load generation to minimize timing discrepancies. Each load-generating workstation was connected directly to the same switch through one of the 100MbE ports.
The Tests
User Distribution
Bandwidth Distribution Note that with a bandwidth per user of 10Mbit on a 100Mbit network, no more than 10 users could be supported using their full bandwidth (assuming 100% network efficiency, which Ethernet can't achieve). However, all the scenarios contain significant "think time" (time between pages) that allows more than 1,000 users to use the 100Mbit bandwidth. Each test was stopped before any indications were given that the throughput capacity had been reach to ensure that our measurements were an accurate gauge of the server's performance.
Construction of Test Cases
Testing Procedure
Servlet Container Preparation The first required component to be installed was the JRE. Sun's JRE 1.5.0 - update 5 was used and installed on each platform with the executable installer. After the JVM was installed, Tomcat 5.5.12 was installed. The Windows download included another executable installer that automated the process. The Linux installation was done by simply unpacking the compressed archive then setting the necessary CATALINA_HOME and JAVA_HOME variables from the command line before using the shell scripts included with the code to start the container. Tomcat 5.5.12 supports linkages to the APR library for acceleration, but for simplicity's sake, both servers were installed and configured with this option disabled. The testing was done by connecting directly to Tomcat and not through any additional software connector or proxy. Once the servlet container was running successfully, the WAR file with our test application was copied to Tomcat's Web apps folder and auto-deployed.
Record the Test Page 1 of 2 next page »
LATEST LINUX STORIES
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||