Hi,
Currently Tomcat's thread pool implementation, which is under
org.apache.tomcat.util.net.AbstractEndpoint, does not expose task
queue size via JMX, while in
org.apache.catalina.core.StandardThreadExecutor it can be accessed via
JMX.
The background is that I am involved with a project to auto scale web
application and the size of task queue is helpful to make the
decision.
Therefore I propose to expose it via JMX. The implementation could be
adding a simple method to org.apache.tomcat.util.net.AbstractEndpoint:
public int getThreadPoolTaskQueueSize() {
if (executor!=null) {
if (executor instanceof ThreadPoolExecutor) {
return ((ThreadPoolExecutor)executor).getQueue().size();
} else if (executor instanceof StandardThreadExecutor) {
return ((StandardThreadExecutor)executor).getQueueSize();
} else {
return -1;
}
} else {
return -2;
}
}
Another issue is that the default implementation of task queue is hard
coded to be infinite, I think it is better to make it configurable,
just like what StandardThreadExecutor does. But I think it worth
discussion in another thread.
Comments welcome.
--
Best Regards!
Huxing
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]