tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Miehs <>
Subject Re: Performance tuning parameters
Date Sun, 18 Feb 2007 23:21:22 GMT
Hash: SHA1

Hi JR,

Based on your description of the problem, as you have looked at
everything else, MaxThreads is the only option you have left us with.

Further below however you let slip that mod_jk is also involved.
Why? This is a really great way to kill performance. You now not
only have the scheduling from Tomcat, you also have the same problem
with Apache.

Two other things to play with are keep-alives - and perhaps trying
the tomcat NIO adapter. (This was suggested by 2 other posters)

You will really need to disable keepalives for busy sites, or you will
need to configure a LOT of threads.

On 16/02/2007, at 3:49 PM, j r wrote:

> I am gleaning from your comments that MaxThreads is the only thing to
> tweak.  Yes I do really have a connection issue.  I have millions and
> millions of connection requests on a very small pool of servers.   
> The app
> has been tuned constantly over years.  I am either bound to buy  
> more servers
> or tweak tomcat to get more throughput.  In reality, I probably  
> need to do
> both.

Why are you running out of connections?

How many requests per second are you getting?
How long does it take to deal with one request?
Do you have keepalives disabled? (The should be if you have so much  

Two be honest, the 750 threads are only really going to help you
to deal with 'spikes' in traffic - or you have 750 cores to deal with  
your traffic.
At some stage (after you have saturated your backend queues) your  
will need to ramp down this number....

For example, if your machine can only deal with 100 requests per  
second, and you are
receiving 200 requests per second, this will, after about 8 seconds  
expand over your thread limit.
This is of course a simplified model, but the same is true if the  
sends requests to the backend which can only deal with x requests per  

I would run a 'ps auxH |grep -c java' every minute (or perhaps even  
every 10 sec)
to see what is going on - I would suggest that you probably have a  
cyclical number
of connections. I would possibly do the same with apache as well, as  
you will probably
have the same problem here.

> On a large pageview day, we will overflow the 750 MaxThreads.  This is
> noticed by the MaxThreads limit being exceeded error message.  We have
> tweaked all pieces of the tomcat config.  I was hoping a post here  
> could get
> more explanation of the parameters.  We have our experience to fall  
> back on,
> but I was hoping for more.

I would seriously suggest monitoring the number of threads you are using
- - as 750 connector threads does not really sound healthy
- - and I hope you running this on Linux with so many threads...

> If MaxThreads is the main thing to tweak, we will continue doing  
> so.  There
> is a limit to this though.  You should create the funnel for customer
> requests (webserver limits, mod_jk limits, and tomcat limits).   
> Exploding
> MaxThreads to a large number just to be large does not seem to fit  
> with
> having an acceptCount value or the funnel that should be created.

I honestly do not believe that 'tweaking' MaxThreads will do anything  
than to help you get around 'spikes' in your traffic.

One of the sites I am working for also has millions of requests, and  
our thread
count varies from 200 threads at any one time (based on a complicated  
to 90 threads on a simple tomcat logging application.

I would also recommend separating your static/ image traffic from your
dynamic content - using separate urls.



Version: GnuPG v1.4.1 (Darwin)


To start a new topic, e-mail:
To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message