tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <>
Subject Re: Thread dump analysis
Date Wed, 28 Jan 2009 15:34:45 GMT
Hash: SHA1


Pieter Temmerman wrote:
> Memory usage looks healthy, but CPU usage goes sky high (mainly caused
> by the Java Tomcat process).

That's interesting. Looking at your thread dump snippet, it looks like
your database connection pool is exhausted. If that were the only
problem, you'd have very low CPU usage because everything would be
blocked waiting. Something else must be going on.

> 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?

Each HTTP connection is assigned a TP-Processor for the duration of the

> But for some kind of reason, there is never a free
> one available, and the application just won't work until Tomcat is
> restarted.

You are probably leaking them somewhere. The fact that your server stays
up for an arbitrary amount of time leads me to believe that you have a
leak in one place, but not everywhere. So, if someone is using that
leak-prone code a lot, you exhaust your connection pool quickly, but if
not, the server stays up for a long time.

Are you using Tomcat's DBCP? If so, enable all the debugging features
(logAbandoned, removeAbandoned, etc.) which should lead you to the code
that is leaking connections.

> 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.

That's just the way the thread dump looks.

> So I was wondering:
>   a. Is that normal behavior?

Yes, assuming that resource exhaustion is considered "normal".

>   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.

It's just a pointer, so knowing the decimal value is pretty useless.

> Maybe it's just as easy as it reads: Waiting on 0x0002aabad....which is
> a GenericObjectPool.

Right: the JVM tells you what object 0x0000abababa... is.

- -chris
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla -


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message