Jackrabbit search tuning
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Feb 2015 21:54:21 +0000 (21:54 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Feb 2015 21:54:21 +0000 (21:54 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@7994 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

demo/argeo_node_rap.properties
org.argeo.cms/src/org/argeo/cms/internal/kernel/JackrabbitNode.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelConstants.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-h2.xml
org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-memory.xml
org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql-ds.xml [new file with mode: 0644]
org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql.xml

index 502c50e8c8e94d7e575117b8ac4626eb01b0d386..520c5baf46212a546806663a5a3f8ccca845efe9 100644 (file)
@@ -34,9 +34,16 @@ eclipse.registry.MultiLanguage=true
 log4j.configuration=file:../../log4j.properties
 
 # Tuning
+# Number of DB connections
+#argeo.node.repo.maxPoolSize=10
+# Max amount of memory available to Jackrabbit caches
 #argeo.node.repo.maxCacheMB=16
+# Persistence level cache
 #argeo.node.repo.bundleCacheMB=8
-#argeo.node.repo.maxPoolSize=10
+# Search, see http://wiki.apache.org/jackrabbit/Search
+#argeo.node.repo.extractorPoolSize=0
+#argeo.node.repo.searchCacheSize=1000
+#argeo.node.repo.maxVolatileIndexSize=1048576
 
 # DON'T CHANGE BELOW
 org.eclipse.rap.workbenchAutostart=false
\ No newline at end of file
index c9c100e129e74c5a8f6567ed64e6cc3886bff1d2..50c78edaa1d5caf83d0610f490863a6c08385d6a 100644 (file)
@@ -125,6 +125,10 @@ class JackrabbitNode extends JackrabbitWrapper implements KernelConstants,
                setProp(defaults, REPO_MAX_POOL_SIZE, "10");
                // Jackrabbit default:
                setProp(defaults, REPO_BUNDLE_CACHE_MB, "8");
+               // See http://wiki.apache.org/jackrabbit/Search
+               setProp(defaults, REPO_EXTRACTOR_POOL_SIZE, "0");
+               setProp(defaults, REPO_SEARCH_CACHE_SIZE, "1000");
+               setProp(defaults, REPO_MAX_VOLATILE_INDEX_SIZE, "1048576");
 
                // specific
                String dburl;
index 896eca5b80d302e26d7cbb02c3064204f17f49de..7465583f9bdd45fd84b74c829d4bdb22f02b19cc 100644 (file)
@@ -12,6 +12,9 @@ public interface KernelConstants {
        final static String REPO_MAX_POOL_SIZE = "argeo.node.repo.maxPoolSize";
        final static String REPO_MAX_CACHE_MB = "argeo.node.repo.maxCacheMB";
        final static String REPO_BUNDLE_CACHE_MB = "argeo.node.repo.bundleCacheMB";
+       final static String REPO_EXTRACTOR_POOL_SIZE = "argeo.node.repo.extractorPoolSize";
+       final static String REPO_SEARCH_CACHE_SIZE = "argeo.node.repo.searchCacheSize";
+       final static String REPO_MAX_VOLATILE_INDEX_SIZE = "argeo.node.repo.maxVolatileIndexSize";
 
        final static String[] DEFAULT_CNDS = { "/org/argeo/jcr/argeo.cnd",
                        "/org/argeo/cms/cms.cnd" };
index 5f7d0043dfdb756bad5c5f3126e2f448791f9ebb..4c4875f1c62525474fc744e9df3b700324b845b9 100644 (file)
                        class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
                        <param name="dataSourceName" value="dataSource" />
                        <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
                <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                        <param name="path" value="${wsp.home}/index" />
-                       <param name="initializeHierarchyCache" value="true" />
+                       <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+                       <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+                       <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
                </SearchIndex>
        </Workspace>
 
                        class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
                        <param name="dataSourceName" value="dataSource" />
                        <param name="schemaObjectPrefix" value="pm_ver_" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
        </Versioning>
 
        <!-- Indexing -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                <param name="path" value="${rep.home}/index" />
-               <param name="initializeHierarchyCache" value="true" />
-               <!-- <param name="extractorPoolSize" value="2" /> -->
-               <!-- <param name="supportHighlighting" value="true" /> -->
+               <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+               <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+               <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
        </SearchIndex>
 
        <!-- Security -->
index 8181ad34d911301f7b52dbedd32a75e69c5440b3..7793c1517a30cbe4e07baf6587f61aa324ed817b 100644 (file)
                <PersistenceManager
                        class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
                        <param name="blobFSBlockSize" value="1" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
                <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                        <param name="path" value="${wsp.home}/index" />
                        <param name="directoryManagerClass"
                                value="org.apache.jackrabbit.core.query.lucene.directory.RAMDirectoryManager" />
+                       <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+                       <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+                       <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
                        <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
                </SearchIndex>
        </Workspace>
@@ -28,7 +31,7 @@
                <PersistenceManager
                        class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
                        <param name="blobFSBlockSize" value="1" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
        </Versioning>
 
@@ -37,6 +40,9 @@
                <param name="path" value="${rep.home}/index" />
                <param name="directoryManagerClass"
                        value="org.apache.jackrabbit.core.query.lucene.directory.RAMDirectoryManager" />
+               <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+               <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+               <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
                <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
        </SearchIndex>
 
diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql-ds.xml b/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql-ds.xml
new file mode 100644 (file)
index 0000000..1e894a2
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!DOCTYPE Repository PUBLIC "Jackrabbit 2.6" "http://jackrabbit.apache.org/dtd/repository-2.6.dtd">
+<Repository>
+       <!-- Shared datasource -->
+       <DataSources>
+               <DataSource name="dataSource">
+                       <param name="driver" value="org.postgresql.Driver" />
+                       <param name="url" value="${argeo.node.repo.dburl}" />
+                       <param name="user" value="${argeo.node.repo.dbuser}" />
+                       <param name="password" value="${argeo.node.repo.dbpassword}" />
+                       <param name="databaseType" value="postgresql" />
+                       <param name="maxPoolSize" value="${argeo.node.repo.maxPoolSize}" />
+               </DataSource>
+       </DataSources>
+
+       <!-- File system and datastore -->
+       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+               <param name="dataSourceName" value="dataSource" />
+               <param name="schema" value="postgresql" />
+               <param name="schemaObjectPrefix" value="fs_" />
+       </FileSystem>
+       <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
+               <param name="path" value="${rep.home}/datastore" />
+       </DataStore>
+
+       <!-- Workspace templates -->
+       <Workspaces rootPath="${rep.home}/workspaces"
+               defaultWorkspace="${argeo.node.repo.defaultWorkspace}" />
+       <Workspace name="${wsp.name}">
+               <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schema" value="postgresql" />
+                       <param name="schemaObjectPrefix" value="${wsp.name}_fs_" />
+               </FileSystem>
+               <PersistenceManager
+                       class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
+               </PersistenceManager>
+               <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
+                       <param name="path" value="${wsp.home}/index" />
+                       <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+                       <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+                       <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
+               </SearchIndex>
+       </Workspace>
+
+       <!-- Versioning -->
+       <Versioning rootPath="${rep.home}/version">
+               <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schema" value="postgresql" />
+                       <param name="schemaObjectPrefix" value="fs_ver_" />
+               </FileSystem>
+               <PersistenceManager
+                       class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schemaObjectPrefix" value="pm_ver_" />
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
+               </PersistenceManager>
+       </Versioning>
+
+       <!-- Indexing -->
+       <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
+               <param name="path" value="${rep.home}/index" />
+               <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+               <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+               <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
+       </SearchIndex>
+
+       <!-- Security -->
+       <Security appName="Jackrabbit">
+               <SecurityManager class="org.argeo.security.jackrabbit.ArgeoSecurityManager"
+                       workspaceName="security">
+               </SecurityManager>
+               <AccessManager class="org.argeo.security.jackrabbit.ArgeoAccessManager">
+               </AccessManager>
+               <LoginModule class="org.argeo.security.jackrabbit.ArgeoLoginModule">
+               </LoginModule>
+       </Security>
+</Repository>
\ No newline at end of file
index 6ed23b59a47004aa2b784d29b79f11b0d8991784..1f61ea34222d9e40606b16d6b30b412d949963a6 100644 (file)
@@ -19,9 +19,6 @@
                <param name="schema" value="postgresql" />
                <param name="schemaObjectPrefix" value="fs_" />
        </FileSystem>
-       <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
-               <param name="path" value="${rep.home}/datastore" />
-       </DataStore>
 
        <!-- Workspace templates -->
        <Workspaces rootPath="${rep.home}/workspaces"
                        class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
                        <param name="dataSourceName" value="dataSource" />
                        <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
                <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                        <param name="path" value="${wsp.home}/index" />
+                       <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+                       <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+                       <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
                </SearchIndex>
        </Workspace>
 
                        class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
                        <param name="dataSourceName" value="dataSource" />
                        <param name="schemaObjectPrefix" value="pm_ver_" />
-                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}"/>
+                       <param name="bundleCacheSize" value="${argeo.node.repo.bundleCacheMB}" />
                </PersistenceManager>
        </Versioning>
 
        <!-- Indexing -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                <param name="path" value="${rep.home}/index" />
-               <param name="extractorPoolSize" value="2" />
-               <param name="supportHighlighting" value="true" />
+               <param name="extractorPoolSize" value="${argeo.node.repo.extractorPoolSize}" />
+               <param name="cacheSize" value="${argeo.node.repo.searchCacheSize}" />
+               <param name="maxVolatileIndexSize" value="${argeo.node.repo.maxVolatileIndexSize}" />
        </SearchIndex>
 
        <!-- Security -->