tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Miehs <and...@2sheds.de>
Subject Re: AW: Meaning of threads
Date Mon, 24 Jan 2005 22:32:28 GMT
On Jan 24, 2005, at 11:09 PM, Steffen Heil wrote:

> Hi
>
>> the number of threads will depend on the size of your
>> machine, but to support many concurrent users, you will want
>> to turn off keep alive connections, as these will have the
>> opposite effect.
>
> Wouldn't it make more sense to enable keep alive connections and 
> increase
> the thread count - if memory suffices?
>

Unfortunately not. IMHO threads are over used and over rated.
Have a look at the reasons THTTPD and Zeus webserver were created.

I was told that the 'Java Servlet Spec' (I think this was the one) 
requires
one thread per connection. I can understand the reasoning behind this,
as it makes the implementation much easier.

In my experience however, this does NOT work well in a high traffic 
situation.
It makes NO sense for a machine to need to deal with 1000+ threads. 
(Unless
of course you have an E15000 in the basement with 1000 processors). I 
had
major problems with Debian Woody as the supplied Glib C as I was unable
to get java to start more than 250 threads. Sarge was better in that it 
supported
the new linux threading library out of the box. I do not have any 
experience with
Solaris or Windows when dealing with that many threads.

You need to disable keep-alives, becuase if you don't you end up 
wasting a lot
of threads that just sit waiting for the next request on that 
connection - meaning
even more threads just hanging around.

The scary thing is, imagine something hangs on the backend for 30 
seconds, and
then all your 1000 threads start trying to do something at once.... You 
will end up
with a load of 1000 and ALL your requests will take a long time to 
return.

It may be interesting to replace the http connector for tomcat with one 
that uses
"select" and uses 'threads' as a type of worker pool. This way, you can 
deal with
all the connections in the select loop (incl. keep-alive) and still 
have the advantage
of not needing to remember state due to the worker threads to the back 
end...

My 2c

Andrew




---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message