tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David E. Filip" <>
Subject http thread shutdown question
Date Wed, 11 Nov 2015 19:13:43 GMT
I have a question about the threads that Tomcat uses for servicing requests.  My environment
is Tomcat 7.0.55 running on Linux (CentOS 6.5) with Oracle JVM 1.7.0_79.

My question is specifically about the threads that Tomcat uses for servicing requests which
are named ‘http-bio-{port}-exec-###’, as revealed by Thread.getName().  I have — for
better or worse — written a servlet that caches some information using ThreadLocal[.set()][.get()]
 for performance.  This mostly works very well, except that the number of threads in Tomcat’s
Execution pool seem to change, with old threads going away, and new ones being created, and
I have a need to know when any of these threads go away, so that I can perform some clean-up.

I am not asking about maxThreads, minThreads, etc., and I get how to configure the number
of threads in the pool.  However, if I configure a particular pool size to say 50, I will
see in the Tomcat Manager / Status page that the pool never goes above 50 (and current threads
is usually much lower).  When the threads start out, they will begin as:

	… etc …

However, if I leave the server running, they will eventually become:

	… etc …

even though there are always less than 50 threads at any given time.

So my question is whether there is any way to tell when one of the threads is stopped (removed
from the queue?) by Tomcat, and if I can hook any code to execute before it does?  My goal
is to be able to tell when a thread is about to be killed so that I can do some clean-up.

Or is the answer dotn’s ThreadLocal for anything that needs clean-up, as there is no way
to tell when Tomcat is going to stop (remove?) a thread from its queue?

Extra credit question: when does Tomcat decided to kill a thread, since although understand
that would happen when the queue size expands and collapses, on my development server I doubt
I’m ever going beyond minThreads.  Does each thread only handle a fixed number of requests
before it terminates, perhaps to prevent memory leaks?

I am hoping that this is the best place to ask this question.  I have tried searching the
‘Net, and couldn’t find anything, although I acknowledge that perhaps I am asking something
that is just not possible.

Thanks in advance to anyone who can shed any light on this.  And I do know how to hook a servlet
being shut down, which is not what I am asking.



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

View raw message