Mark Thomas wrote:
Remy Maucherat wrote:

[EMAIL PROTECTED] wrote:

Author: markt
Date: Tue Nov  8 11:32:28 2005
New Revision: 331870

URL: http://svn.apache.org/viewcvs?rev=331870&view=rev
Log:
Simple part of fix for bug 37150 based on profiler output. Doesn't fix the major culprit. Needs more work.

This bug report is nonsense ...

No it isn't. If it was, I would have closed it as invalid along with an explanation as to why it is invalid.

I have a trivial JMeter test that re-creates the problem and a profiler output that shows where the problems are. The larger the number of files in the directory, the easier it is to reproduce. I have been using 1000.

Analysing the output of the profiler, 96% of the time is spent in renderHtml(). Digging deeper 49% of the time is spent in ProxyDirContext.lookupCache() and 26% in rewriteURL(). My patch reduced the rewriteURL() figure from 33%. Not a big help but a simple, obvious fix.

I haven't looked further at rewriteURL() yet to see what, if anything, can be done to speed this up.

I have been looking at ProxyDirContext.lookupCache(). Every single call to ProxyDirContext.lookupCache() results in a call to ProxyDirContext.revalidate() which in turn calls FileDirContext.file(String). This is an expensive method call, mainly due to File object creation and the call to File.getCanonicalPath().

The cache should take most of the load here but what happens is if the cache isn't valid (eg the first time a directory listing is requested) the calls to ProxyDirContext.revalidate() take so long that by the time the next directory listing is created, the cache is invalid again. On my reasonably powerful dev box, two requests in parallel are enough to slow things down to a crawl for a few minutes.

Increasing the TTL on the cache would reduce the frequency of the lock-up, but things are still going to slow down once the cache expires.

I have some ideas to optimise the process of looking up the directory contents but nothing concrete and I want to make sure any patch doesn't open up any security holes.

It's a directory listing, how can this be fast, or even useful besides for casual users ?

Rémy

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to