br1 wrote:
Apologies,

This one is much better, netstat shows 50 connections
I don't know enough of Tomcat to understand if anything in this log could
cause this issue..

Much better: You have a synchronization issue in your database connection pool. It seems you are using the c3p0 pool, which can be found at:

http://c3p0.cvs.sourceforge.net/

Your thread dumps (all three of them) show, that 52 threads are waiting to get a connection from the pool:

java.lang.Object.wait(Native Method)
- waiting on <0x07c3cc50> (a com.mchange.v2.resourcepool.BasicResourcePool)
com.mchange.v2.resourcepool.BasicResourcePool.awaitAcquire(BasicResourcePool.java:968)
com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:208)
- locked <0x07c3cc50> (a com.mchange.v2.resourcepool.BasicResourcePool)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:260)
com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
com.mchange.v2.c3p0.ComboPooledDataSource.getConnection(ComboPooledDataSource.java:521)
org.theorg.thebranch.util.Sql.GetMySqlJDBCConnFromPool(Sql.java:61)

Those calls are coming from three JSPs:

Count JSP
 47 jinclude.pager_jsp
  3 ag_005ffigures_jsp
  2 ag_005falpha_jsp

but those are not the problems. The problem seems to be either in the pool, or the application doesn't return connections correctly to the pool after use. The c3p0 web site has a couple of bug entries, which at first site look related.

One Thread TP-Processor number 8 is working on some request in all three dumps, returning content via the default servlet.

In this situation further requests would simply get stuck in the same stack, eating up IIS threads and connections.

You can free the IIS threads by using a reply_timeout for the worker, but you can't break the waiting for the pool inside tomcat. If you consider using a reply_timeout, use version 1.2.26 of the redirector and don't set the timeout to low. Also consider using max_reply_timeouts. If the reply_timeout fires (and you got more than max_reply_timeouts of them), then the redirector will disable the whole worker (Tomcat) for some time. In the observed situation this is the correct way of handling it, but you don't want to set the timeout let's say to 5 seconds and then notice, that every now and then a Tomcat gets disabled because one request took longer than 5 seconds. Have a look at the Timeouts docs page.

Regards,

Rainer

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to