>> For Ty's purposes, simply avoid JAR scanning entirely should eliminate
>> the heap issues, right? Moving from Tomcat 6 means that JAR scanning
>> is not required for correct operation of their application.

> Yes. http://wiki.apache.org/tomcat/HowTo/FasterStartUp has the details
> of the configuration required.

I might be missing something, if so please correct me, but it seems that
there's a huge difference with Tomcat 8, even when JAR scanning is taken
out of the picture (jarsToSkip=*).

For my test case, Tomcat 8 has a heap size of ~1GB with JAR scanning
enabled, and ~600MB with jarsToSkip=*.  That's a 40% improvement by
disabling JAR scanning, sure, but for comparison, same test case, Tomcat
6's heap is ~20MB while Tomcat 7's (with jarsToSkip=*) is ~70MB.  We're
still back to a 30x increase in heap utilization from Tomcat 6 to Tomcat 8,
and a 10x increase from Tomcat 7 to Tomcat 8, without having JAR scanning
in the mix.


On Wed, Feb 17, 2016 at 6:14 PM Mark Thomas <ma...@apache.org> wrote:

> On 18/02/2016 00:05, Christopher Schultz wrote:
> > Mark,
> >
> > On 2/17/16 5:04 PM, Mark Thomas wrote:
> >> On 17/02/2016 11:11, Mark Thomas wrote:
> >>> On 16/02/2016 22:07, Ty wrote:
> >>>>> Exactly which versions were you using when you ran your
> >>>>> tests?
> >>>>
> >>>> According to my notes:  7.0.59, which should've been the most
> >>>> recent version available at the time (about this time last
> >>>> year).
> >>>>
> >>>> To clarify:  that was the version we did a heap dump analysis
> >>>> of, and noted the memory increase related to Manifest objects.
> >>>> The version used for the test procedure in this thread's
> >>>> original message -- last performed last week -- was 7.0.67 and
> >>>> we did not do a heap analysis of it (only noting that at a
> >>>> glance it resulted in approximately the same amount of heap
> >>>> increase correlating with JAR scanning as we saw with last
> >>>> year's version).
> >>>
> >>> Thanks for the version info.
> >>>
> >>> I've started looking at this. The bulk of the memory is used by
> >>> JarResourceSet. It is caching a JarFileEntry object for each
> >>> class in the JAR.
> >>>
> >>> I wrote this code but I don't recall why those entries were
> >>> retained. I need to look back through svn to figure out what
> >>> problem it was solving and then see if I can find a better
> >>> solution.
> >
> >> Quick update.
> >
> >> There are two separate issues, both triggered by JAR scanning.
> >
> >> The JarResourceSet issue above accounts for ~50% of a 1GB heap.
> >> There is also a WebappClassLoader issue that accounts for ~30% of
> >> the same heap.
> >
> >> The WebappClassLoader issue is the easier to fix. I have fixed this
> >> in trunk and am just waiting for the tests to confirm all is well.
> >> I plan to back-port this to 8.0.x for the next release.
> >
> >> The JarResourceSet is going to be trickier. The code is the way it
> >> is partly for performance, partly to avoid file locking on Windows.
> >> It is going to take a little longer to put together a fix for this
> >> one.
> >
> > For Ty's purposes, simply avoid JAR scanning entirely should eliminate
> > the heap issues, right? Moving from Tomcat 6 means that JAR scanning
> > is not required for correct operation of their application.
>
> Yes. http://wiki.apache.org/tomcat/HowTo/FasterStartUp has the details
> of the configuration required.
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to