Hippo CMS hangs and work slowly

Good day, my beloved forum, what would I do without you.
I inherited an old project on Hippo 12.6.8, and users are complaining that /cms is running very slowly. I’ve checked the configs and added some values, but the problem still persists.
What would you recommend for a quick/fast solution to this issue?
Thanks in advance :heart:

<?xml version="1.0" encoding="UTF-8"?>
<DataSources>
    <DataSource name="repositoryDS">
        <param name="driver" value="javax.naming.InitialContext"/>
        <param name="url" value="java:comp/env/jdbc/repositoryDS"/>
        <param name="databaseType" value="postgresql"/>
    </DataSource>
</DataSources>

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
    <param name="dataSourceName" value="repositoryDS"/>
    <param name="schemaObjectPrefix" value="repository\_"/>
</FileSystem>

<Security appName="Jackrabbit">
    <SecurityManager class="org.hippoecm.repository.security.SecurityManager"/>
    <AccessManager class="org.hippoecm.repository.security.HippoAccessManager"/>
    <LoginModule class="org.hippoecm.repository.security.HippoLoginModule"/>
</Security>

<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>

<Workspace name="${wsp.name}">
    <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
        <param name="dataSourceName" value="repositoryDS"/>
        <param name="schemaObjectPrefix" value="${wsp.name}\_"/>
    </FileSystem>

    <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
        <param name="dataSourceName" value="repositoryDS"/>
        <param name="schemaObjectPrefix" value="${wsp.name}\_"/>
        <param name="externalBLOBs" value="true"/>
        <param name="consistencyCheck" value="false"/>
        <param name="consistencyFix" value="false"/>
        <param name="bundleCacheSize" value="4096"/>
    </PersistenceManager>

    <SearchIndex class="org.hippoecm.repository.FacetedNavigationEngineImpl">
        <param name="indexingConfiguration" value="indexing_configuration.xml"/>
        <param name="indexingConfigurationClass" value="org.hippoecm.repository.query.lucene.ServicingIndexingConfigurationImpl"/>
        <param name="path" value="${wsp.home}/index"/>
        <param name="useSimpleFSDirectory" value="true"/>
        <param name="useCompoundFile" value="true"/>
        <param name="minMergeDocs" value="100"/>
        <param name="volatileIdleTime" value="10"/>
        <param name="maxMergeDocs" value="20000"/>
        <param name="mergeFactor" value="8"/>
        <param name="maxFieldLength" value="10000"/>
        <param name="bufferSize" value="2048"/>
        <param name="cacheSize" value="2000"/>
        <param name="onWorkspaceInconsistency" value="log"/>
        <param name="forceConsistencyCheck" value="false"/>
        <param name="enableConsistencyCheck" value="false"/>
        <param name="autoRepair" value="true"/>
        <param name="analyzer" value="org.hippoecm.repository.query.lucene.StandardHippoAnalyzer"/>
        <param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl"/>
        <param name="respectDocumentOrder" value="false"/>
        <param name="resultFetchSize" value="2000"/>
        <param name="extractorTimeout" value="100"/>
        <param name="extractorBackLogSize" value="100"/>
        <param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultHTMLExcerpt"/>
        <param name="supportSimilarityOnStrings" value="true"/>
        <param name="supportSimilarityOnBinaries" value="false"/>
    </SearchIndex>

    <ISMLocking class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"/>
</Workspace>

<Versioning rootPath="${rep.home}/version">
    <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
        <param name="dataSourceName" value="repositoryDS"/>
        <param name="schemaObjectPrefix" value="version\_"/>
    </FileSystem>

    <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
        <param name="dataSourceName" value="repositoryDS"/>
        <param name="schemaObjectPrefix" value="version\_"/>
        <param name="externalBLOBs" value="true"/>
        <param name="consistencyCheck" value="false"/>
        <param name="consistencyFix" value="false"/>
        <param name="bundleCacheSize" value="2048"/>
    </PersistenceManager>

    <ISMLocking class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"/>
</Versioning>

<Cluster>
    <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
        <param name="dataSourceName" value="repositoryDS"/>
        <param name="databaseType" value="postgresql"/>
        <param name="schemaObjectPrefix" value="repository\_"/>
        <param name="revision" value="${rep.home}/revision.log"/>
    </Journal>
</Cluster>

<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
    <param name="dataSourceName" value="repositoryDS"/>
    <param name="minRecordLength" value="1024"/>
    <param name="maxConnections" value="50"/>
    <param name="copyWhenReading" value="true"/>
</DataStore>

`<?xml version='1.0' encoding='utf-8'?>


<Resource
        name="jdbc/repositoryDS" auth="Container" type="javax.sql.DataSource"
        maxTotal="100" maxIdle="30" initialSize="10" maxWaitMillis="10000"
        testWhileIdle="true" testOnBorrow="false" validationQuery="SELECT 1"
        timeBetweenEvictionRunsMillis="10000"
        minEvictableIdleTimeMillis="60000"
        username="admin" password="admin"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://127.0.0.1:5432/postgres" />

<Parameter name="repository-config" value="file:/config/repository.xml" override="false"/>

<Parameter name="repository-directory" value="/work/storage" override="false"/>

<Resources cachingAllowed="true" cacheMaxSize="1000000" />
<CookieProcessor className = "org.apache.tomcat.util.http.LegacyCookieProcessor" />

`

Hi,
At first I’d look at the bundle cache size, to double (or quadruple?) that, depending on the available memory. It the size of the in-memory repository layer that can cause slowness if it’s too small.

See Configure the BundleCache - Bloomreach Experience Manager (PaaS/Self-Hosted) - The Fast and Flexible Headless CMS .

Then maybe optimize page size settings? See Configure the CMS Folder Listing Page Size - Bloomreach Experience Manager (PaaS/Self-Hosted) - The Fast and Flexible Headless CMS

Cheers, Jeroen

hi @B_A do you have some monitoring in place to observe CPU/memory/garbage collection/threads etc? They might indicate some issues as well like not enough heap or blocked threads.

43GB RAM Available, Launch Project With Fantastic Data

How can this be done?

Could this be related to the fact that we have version 16 of postgres? We had version 11 before, we moved

Postgres SQL maxPool connection 400