I've done a servlet request filter for this and many other such things.
I've always been a bit surprised by how little of this data Tomcat
collects -- but that's fine as one can do a servlet request filter that
will work in any servlet engine and collect everything you want.
That said, collecting some of this information becomes a lot more
challenging with asynchronous requests, which is something I've not yet
tackled. For instance, it's easy to track the CPU usage for each
synchronous request (obviously from the servlet filter on down in the
call stack, not counting the Tomcat calls before/after this), but not so
easy for an asynchronous request...
--
Jess Holle
On 5/18/2011 6:31 AM, Dan Checkoway wrote:
I've messed around a bit, and I figured out a more reliable way to do
it...but it's pretty nasty. Basically I'm iterating and grabbing the
"requestCount" attribute from all of the RequestProcessor mbeans, and just
tallying them up.
Like I said, it's nasty, since you need to know the max possible # of
RequestProcessor beans, there are "gaps" in the sequence, etc. I'm hoping
there's an easier way to get just a single JMX-exposed attribute
representing total requestCount.
Possible? Wish list item...open a bugzilla ticket? Bueller...Bueller...?
:-)
Dan
On Tue, May 17, 2011 at 4:22 AM, Dan Checkoway<dchecko...@gmail.com> wrote:
I'm looking for advice on the most reliable& efficient way to track tomcat
throughput...preferably via JMX. I've written a simple app that uses JMX to
grab the "completedTaskCount" attribute on the Executor. My assumption was
that the Executor's completedTaskCount would be a fairly accurate way to
watch, in real-time, the number of HTTP requests served...and a heck of a
lot simpler than just counting access log lines. Basically the app grabs
the completedTaskCount every 10 seconds and does a simple "how many more
since the last time I checked" rate calculation.
But what I think I'm seeing is that the Executor's completedTaskCount grows
at a rate higher than the actual number of HTTP requests being served. So
I'm wondering...is a shared Executor being used for purposes other than just
serving requests, and if so, what other types of tasks are being executed?
Is there any other attribute exposed by JMX that might be a more reliable
way of counting actual HTTP requests served? Is there a simpler way of
accomplishing the same goal that doesn't involve access log analysis?
Thanks,
Dan
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org