Riz,

> Basically, we could not log into the system at all (which sounded like
> the app could not get a connection to the db to authenticate my user
> name and password). I had someone else try to log in, but he could not
> either.

That sounds like a wild guess at the problem. Your previous thread dump
only included 3 threads. How many were waiting on DBCP for a JDBC
connection? What did you have to do in order to get the server working
again? Re-start Tomcat? Bounce the database? OR, did it clear itself up
after a while.

Oh, and also: was this in your production or development environment?

>    <Connector port="8080" maxHttpHeaderSize="8192"
>               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"


Note that you have 3 connectors (HTTP, HTTPS, and AJP13) and each of
them have a lot of potential threads in there. Your server will accept
as many as 150 + 150 + 150 connections simultaneously. If they all need
database connections, you're screwed, 'cause you only have between 10
and 30 (right?):

>                  <prop key="hibernate.dbcp.maxActive">30</prop>
>                  <prop key="hibernate.dbcp.whenExhaustedAction">20</prop>
>                 <prop key="hibernate.dbcp.maxWait">1000</prop>
>                 <prop key="hibernate.dbcp.maxIdle">10</prop>          


I'm not sure how to set it up using hibernate's wrapper around DBCP, but
I recommend setting the following debug options on the connection pool:

                <!-- Some debugging settings -->
                <parameter>
                    <name>removeAbandoned</name>
                    <value>true</value>
                </parameter>
                <parameter>
                    <name>removeAbandonedTimeout</name>
                    <value>300</value>
                </parameter>
                <parameter>
                    <name>logAbandoned</name>
                    <value>true</value>
                </parameter>

Together, these will dump out a stack trace of any code that gets a
database connection and never returns it. This is useful for finding
accidental connections leaks. I also recommend setting your pol size
fixed at 1 (yes, that's ONE) in development. It will help you find any
connection leaks that you might have very quickly.

-chris


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to