We have 5 physical servers that have a hardware load balancer infront of them, each has an Apache server that uses mod_jk to connect to three (per server) Tomcat instances, all have the exact same web apps deployed. I've made the argument to drop one of the Tomcats (per server) and increase memory allocation to the remaining two. I'm wondering if even two is necessary or we should just have a single Apache-Tomcat pair per physical server. I couldn't get a good reason as to why this was set up to begin with, but it was how it was when I joined the development team.
I guess I could also ask, are there any clear disadvantages? What comes to mind to me is that, as I've noted, less memory is going to be available overall (to the point where, depending on how many webapps you have, you're starved), and also more pooled connections behind held by each instance.
Best Answer
This is an incredibly application-specific question. There are a variety of reasons I can think of why it could be of benefit either way. Most of the "multiple tomcat" positives are rebutted with "well, don't do that, then", but "that's the way we've always done it" is a powerful argument with people who probably shouldn't be making these sorts of decisions (but usually are).
The reasons I've come across why multiple independent Tomcat instances are used include:
Reasons why a single process is better include: