Hi all,
We've been doing some detailed performance investigation on a JackRabbit app
with approx 75,000 entries in the bundles table and 12,000 binaries in the
binval table.

The behaviour we were seeing was that the database was continually being
hammered to retrieve BLOB values and the synchronisation restrictions, which
mean that node & BLOB reads require exclusive access, were causing the
application to stop responding and block around a single thread. Jackrabbit
was writing the BLOBs to the /tmp directory but we were also seeing some of
these BLOB values auto-deleting and being re-fetched.

Enabling the logging for BundleCache helped diagnose the issue. Basically we
believe with the small 8MB default BundleCache size nodes JackRabbit also
immediately filled this cache (with about 2,000 nodes) on startup.
Thereafter it was thrashing with nodes dropping in and out of the cache. The
lifetime of the local BLOB cache on the disk is tied to the lifetime of the
node object that references it (via the garbage collector). As a result when
the node is evicted from the cache the associated BLOB was also deleted. If
the node was then required, it & the BLOB were re-read.

The solution that made a massive difference was to set "bundleCacheSize"
much larger within the persistence manager. This massively reduced the IO to
the database. We're considering whether to deploy a fault tolerant file
system and use external BLOBs.

Comments / Suggestions from this investigation:
 * it would be good to explicitly list the "bundleCacheSize" as a
configuration setting in the default persistence manager configuration
showing the default of 8MB. This may already be the case.
 * the synchronisation around the bundle persistence manager becomes a real
issue as the database is hit more and more. In our case blocked reads were
the issue.
 * it would be great to be able to leverage more sophisticated caching
facilities for the BLOB cache and BundleCache using something like ehcache.

Regards,
Shaun




-----Original Message-----
From: Alexander Klimetschek [mailto:[EMAIL PROTECTED] 
Sent: 13 June 2008 19:57
To: [email protected]
Subject: Re: Controlling the cache size to reduce BLOB property eviction

On Fri, Jun 13, 2008 at 3:37 PM, sbarriba <[EMAIL PROTECTED]> wrote:
> To summarise my question - is there a way to increase the number of
> InternalValue (and I guess nodes) that are cached by JackRabbit?

This link might help:

http://wiki.apache.org/jackrabbit/CacheManager

Regards,
Alex

-- 
Alexander Klimetschek
[EMAIL PROTECTED]


Reply via email to