Hi all.

I've been investigating why one of our applications (running in Tomcat
5.5.7) suddenly freezes after a variable amount of time (sometimes
10min, sometimes 2 hours).

Disclaimer: I'm not the developer of the application, nor do I know the
exact details of how stuff is implemented. I know..it sucks.

Memory usage looks healthy, but CPU usage goes sky high (mainly caused
by the Java Tomcat process).
So I made a thread dump and the first thing I noticed was the large
amount of TP-ProcessorXX threads, most of them in WAITING state.

A small snippet of the thread dump (it's very very big).

"TP-Processor290" daemon prio=1 tid=0x00002aaab47acd30 nid=0x6486 in
Object.wait() [0x0000000056ae4000..0x0000000056ae6e10]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00002aabadaabff8> (a
org.apache.commons.pool.impl.GenericObjectPool)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:810)
        - locked <0x00002aabadaabff8> (a
org.apache.commons.pool.impl.GenericObjectPool)
        at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
        at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
        at
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
        at
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
        at
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
        at
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
        at org.hibernate.loader.Loader.doQuery(Loader.java:673)

My first question is, what is a TP-Processor exactly? Is each client
connection to Tomcat being assigned a TP-Processor or am I wrong?

Anyway, back to the thread dump itself.
There are a lot (read: +100) of those TP-Processor threads in waiting
state which mention org.hibernate.blablabla. So my guess is that the
freeze is being caused by a database connection pool that is out of open
connections, and thus the application those threads are waiting until
there is a free one. But for some kind of reason, there is never a free
one available, and the application just won't work until Tomcat is
restarted.

In the assumption that this is the reason for the application to hang,
my "thread dump decoding knowledge" is too limited to be sure what is
causing this situation. Is the thread pool just too small, is the
application not closing it's connections, and thus running out of
connections. I have no idea.

Therefor, my second question.

"TP-Processor290" daemon prio=1 tid=0x00002aaab47acd30 nid=0x6486 in
Object.wait() [0x0000000056ae4000..0x0000000056ae6e10]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00002aabadaabff8> (a
org.apache.commons.pool.impl.GenericObjectPool)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:810)
        - locked <0x00002aabadaabff8> (a
org.apache.commons.pool.impl.GenericObjectPool)


Note the line "locked <0x00002aabadaabff8>" and "waiting on
<0x00002aabadaabff8>" later on. So first it's locking that "thing" and
then it's waiting on that "thing". This same number is coming back in
each TP-Processor that is in waiting state. That seems rather weird to
me.
So I was wondering:
  a. Is that normal behavior?
  b. Is there any way to know what the 0x00002aabadaabff8 means?

My scientific calculator says it's rather an insane number when trying
to convert it to decimal.
Maybe it's just as easy as it reads: Waiting on 0x0002aabad....which is
a GenericObjectPool.

Any help to confirm my supposition will be kindly appreciated. 


 





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to