Howdy,
See intermixed -- there are a lot of different questions here ;)

> This turned out to be the case, but for a funky reason.  By using the

JDBC drivers are a frequent cause for this.  Another is JMS clients.

> It turns out that the SCSI backplane was the real problem and had to be
> replaced.  Since getting this server back up was the main priority, I didn't
<snip>

Good piece of debugging there ;)  Those can be a pain.

> Connection.  I have since re-coded our ConnectionPool so that it abandons the
> Connection creation thread after 5 seconds (i.e. Thread.join(5000)).  There

It's interesting to hear this in light of the currently raging discussion among
the DBCP developers on whether DBCP should support abandoning connections after
a certain timeout.  See the DBCP messages from the past couple of days on the
jakarta-commons-dev mailing list for more details.

> >Turn on debug="99" in server.xml (wherever you see debug="0").  Same
> >thing for the servlets defined in $CATALINA_HOME/conf/web.xml.
>  
> Wow....that's a lot of logging on a production machine.  It was very hard to
> find anything useful inside all the clutter, but by selective use of
> debug="99" in certain containers it was at least manageable.

Yup, that's a ton.  In the presence of a hard to reproduce problem, I prefer to
start with overkill and then turn things off as I narrow down / rule out
possible causes.  It's a subjective thing ;)

> 
> No security manager.  I removed all the tomcat webapps besides manager and it
> didn't make a difference.  My real question is why does this runaway thread
> crash almost everything in Tomcat?  It doesn't seem to kill a lot of

It's a JVM effect.  It's not specific to tomcat, would likely happen in any
container.  The way it manifests itself might be particular to tomcat.

> resources.  If a single execution thread (from a servlet or JSP) goes on
> infinitely, why does it screw up the whole servlet container?  Or rather,
> part of the container since static pages and the manager app still worked
> fine even when things were bad.

It didn't sound like the manager app was fine (it was hanging and you had to
hit reload).  And I don't recall but I thought the static pages were simply
cached in your browser.

Consider the case of a single thread somewhere in the JVM doing
while(true);

Nothing else matters, the JVM will be stuck, no matter how well-written the
container is.

> On a related note, how do you know when you reach a load that exceeds the
> capacity of your server?  I'm happy to set up load-balancing if need be, but
> I have no idea how to detect the need other than anecdotal "slowness".

You determine an acceptable response time for a page.  You write a script that
calls the page.  You use a tool to run the script that lets you increase the
number of concurrent requests.  You run the script, measure response time, and
when it drops below the acceptable range, you've reached your max capacity for
the current configuration.  Then you start tuning, e.g. maxProcessors for your
connector.

There are ample free (and non-free) tools to do the above: The Grinder, Load
(from PushToTest), JMeter, wget, etc etc.

Yoav Shapira


=====
Yoav Shapira
[EMAIL PROTECTED]

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to