On 6/20/2011 2:41 PM, Jess Holle wrote:
On 6/20/2011 2:16 PM, Mark Thomas wrote:
It should have improved for the majority of use cases in 7.0.14 but at
the price of making it worse for JARs in CATALINA_[HOME_BASE]/lib.
7.0.16 should have returned scanning of JARs in CATALINA_[HOME_BASE]/lib
to the pre 7.0.14 performance levels.
We're embedding Tomcat in a larger server process and the base classloader includes a lot more than CATALINA_BASE/lib. Some of these jars are huge -- and the intent (and effect) is that these are shared by any/all web app instances.

My initial guess is that the 7.0.16 fix may have overlooked this possibility and be special-cased for jars in CATALINA_BASE/lib vs. applying to any jar coming from the base classloader and a file: (vs. HTTP or JNDI) URL.
It looks like there may still be an issue. Profiling data on where the
time is being spent would be useful.
I should be able to drum up such a profile here in a bit...
There's a lot more data in the profile than I really want to post/share, but with heavy/frequent (20ms) VisualVM sampling profiler overhead, I see that ~31 seconds are spent on ContextConfig.webConfig() -- mostly in ContextConfig.processAnnotations(), etc. I also see ~8 seconds spent on TldConfig.execute(). The numbers are clearly inflated from the original metrics due to the crude sampling approach, but the overhead is clearly in these areas.

--
Jess Holle

Reply via email to