5

I'd like to ask the Java pros here a question about my current study that I am about to do - what are the key contributors to the differences in efficiency of various servlet containers? I need to compare Tomcat/JBoss/Glassfish/Jetty etc. and I need to know what "factors" may affect the results in the most significant way? I am going to write mock applications for that purpose, so any recommendation for a Java feature/framework/library etc. that I might implement there so that I can greatly increase the load of the containers (actually the containers, I do not care about the load of the machine since I am going to run all the tests on the same machine of course), would be appreciated! I need the study to be as objective as possible. Thanks for any help guys!

user7116
  • 63,008
  • 17
  • 141
  • 172
  • JBoss AS runs Tomcat container and Jetty does the same, if I'm not mistaken. Why would you want to compare the effiency of the servlet containers? – Buhake Sindi May 27 '11 at 07:15
  • That is hard to answer. There are many aspect worth of benchmarking and there are many possibilities to do so. I am afraid no useful answer to your question is possible unless you explain, what you want to learn from the gathered data. Perhaps start to explain this: Why are you doing that? – jmg May 27 '11 at 07:16
  • @The Elite Gentleman: Jetty is definitely not based on Tomcat, and while older versions of JBoss used Tomcat as web container, I'm not sure the current one does. – Michael Borgwardt May 27 '11 at 08:27
  • Well, I have to do that comparison because I got it as my research topic related to my diploma thesis. I know it's very academical and not much of use in practice, but anyway, it might be interesting to find out some results at least. – Marek Matejka May 27 '11 at 09:26

2 Answers2

6

Some things that could tax a web container (apart from lots of requests, of course):

  • Working with a small heap (e.g. only 128 or 256 MB)
  • Passivating sessions (have large serializable objects in every session, too large to keep all in memory)
  • Serve static resources (lots of small ones, or some big ones)
  • Requests that fail (404 or server error)
  • JSPs that include a lot of other JSPs
  • Large number of different JSPs
  • Large number different servlet mappings
  • Large number of chained servlet filters
  • Large number of separate applications
  • Redeploying applications (make sure the apps themseves have no classloader leak)
Michael Borgwardt
  • 342,105
  • 78
  • 482
  • 720
1

Some more parameters:

  1. Compression enabled
  2. Caching enabled
  3. Turing the buffer sizes
Ramesh PVK
  • 15,200
  • 2
  • 46
  • 50