Database cache size is, by default, set as a percentage of the JVM
heap, using the backend property db-cache-percent.
Alternatively, you use the backend property
db-cache-size to set the size. If you set up multiple
database backends, the total percent of JVM heap used must remain less than
100, and must leave space for other uses. Default settings work for servers
with one user data backend JVM heaps up to 2 GB. For heaps larger than 2 GB,
you can allocate a larger percentage of heap space to DB cache.
Depending on the size of your database, you have a choice to make about database cache settings.
By caching the entire database in the JVM heap, you can get more
deterministic response times and limit disk I/O. Yet, caching the whole
DB can require a very large JVM, which you must pre-load on startup, and
which can result in long garbage collections and a difficult-to-manage
JVM. Test database pre-load on startup by setting the
preload-time-limit for the backend.
$ dsconfig set-backend-prop --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --backend-name userRoot --set preload-time-limit:30m --trustAll --no-prompt
Database pre-load is single-threaded, and loads each database one at a time.
By allowing file system cache to hold the portion of database that does not fit in DB cache, you trade less deterministic and slightly slower response times for not having to pre-load the DB and not having garbage collection pauses with large JVMs. How you configure the file system cache depends on your operating system.

