views:

963

answers:

2

So, I have a webapp with a fair amount of JSPs, servlets, alot of which are using IceFaces. Obviously, most of this will have to stay in Tomcat.

However, I've been told that static content (HTML, Images, etc.) is slower on Tomcat than a pure webserver like Apache. My understanding is that when you're using Tomcat as a stand-alone webserver, it's using a version of Apache in the first place. I may be mistaken on this, of course.

But what is the penalty for serving static images or files from Tomcat? Is it worth breaking out into its own webserver for a low volume site?

+2  A: 

See the Tomcat Connector FAQ for some information. For modern versions of Tomcat, the performance difference is much smaller than it used to be. For a low volume site, there is no reason that you cannot supply all content with Tomcat.

Eddie
+1 Moreover, this solution may simplify your configuration / deployment. I have had problems with Apache mucking with my Tomcat HTTP headers that I have never been able to figure out.
Julien Chastang
A: 

I agree except in two circumstances

  1. Tomcat's SSL using JSSE is noticeably slower. There are native versions that can be plugged in, but that tends to be more painful. In general the SSL is a bit less straightforward than the well-understand Apache Httpd server

  2. Fronting with an HTTpd server gives more flexibility re virtual web hosts etc. Tomcat is not as flexible in this regard. Unsurprisingly it lacks all the options in Apache :). An obvious nice one is built in compression of static files is very easy to add in Apache. It's not hard in tomcat extra, but it's more work.

  3. You are mistaken. Apache Httpd Server is a totally different beast and has no code shared with Tomcqat.

If neither is an issue, than yeah use tomcat by itself

Any benchmarks or the like of the Tomcat SSL thing? That may, in fact, be something to consider. I'm not sure the volume will make it a priority but if our performance starts to hurt too bad, that might be a tipping point.
Drew