tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <>
Subject RE: apache getting in "sending reply" state when connecting to tomcat
Date Thu, 30 Aug 2007 16:55:51 GMT
I'm going to be a real pain, but it make no sense now...
The email has been a team effort in our offices. We have included some
diagrams to help illustrate our understanding or lack off.

Using a simple example:

1/ Assume I have one httpd server (prefork) that can spawn a maximum of
200 children (through httpd Maxclients directive).

2/ Assume I have 1 tomcat servers that can handle 200 threads each.

If I connect the apache to tomcat with mod_jk (lb) I can, in theory
handle 200 concurrent connections.

Now, if I change the figures

1/ Assume I have one httpd server (prefork) that can spawn a maximum of
200 children (through httpd Maxclients directive).

2/ Assume I have 4 tomcat servers that can handle 200 threads each.

In this case each apache child opens a connection to each tomcat server
so I have reached the maximum amount of connections each tomcat can
handle. What I cannot understand is that by increasing the tomcats to 4
I now have 800 possible connections but with the above config I can only
access 200 of them. If I set apache to 800 (through httpd Maxclients
directive) I will open more connection to each tomcat than they can

Is the above senario correct? and if it is then we are not getting more
throughput by adding more tomcats and it would be better to access the
tomcats directly.

So using a ridiculous example, if you have 100 tomcat boxes connecting
to one httpd server. The the limit for amount of spawned children would
still only by 200. Even though you should be able to handle 100x200
concurrent connections. Even if you take into account that for each
request per second received the request will take 4 seconds to process
it still does not seem effective use of the tomcat resources.

A few other resulting questions:
If child1, child2, child3 etc each have a connection to each tomcat,
does each child also do its own load balancing or do all the children
share information to do loadbalancing?


> I don't know exactly, if that parameter changed is some 
> versions, I simply checked one version of Tomcat. I would 
> give it a 85% chance, that 200 is the default also for your version.

Sorry I should have bee more specific I did explicitely check this limit
so in our case it is definitely 200.

> You can: learn about the jmxproxy functionality inside the 
> Tomcat manager webapp to look up the actual values used during runtime
> use "qry=*:*" to get a dump of all MBeans, and then search 
> for 8009 and you will find the right value.
> You can also use netstat -an in a more fine grained way, by 
> not dropping the last column (connection state) to find out, 
> if all connections are actually established, or maybe in SYN_SENT etc.
> > I am in the process of upgrading our production enviroment 
> to mod_jk 
> > .25 and setting relevant time out values which will 
> hopefully improve 
> > things or at least rule out one less potential problem.
> > 
> > Regards
> Yes timeouts and increased thread numbers inside Tomcat will 
> be good. To find out, why there are so many requests in 
> progress you (resp. your webapp developers) really need to 
> take a look at some Java thread dumps of your Tomcat processes.
> Regards,
> Rainer

This email has been scanned by the MessageLabs Email Security System.
For more information please visit 

View raw message