Configuration Advice

#1

We have a customer system with 64 GByte RAM, 16 CPUs on 8 sockets, the fastest possible ssd.

we wonder if the cache and other settings can be optimized to get the most performance

these are the current settings, please advice what we could optimize

 

<!-- ObjectDB Configuration -->

<objectdb>

    <general>
        <temp path="$temp" threshold="64mb" />
        <network inactivity-timeout="0" />
        <url-history size="50" user="true" password="true" />
        <log path="$objectdb/log/" max="8mb" stdout="false" stderr="false" />
        <log-archive path="$objectdb/log/archive/" retain="90" />
        <logger name="*" level="info" />
    </general>

    <database>
        <size initial="256kb" resize="256kb" page="2kb" />
        <recovery enabled="true" sync="true" path="." max="128mb" />
        <recording enabled="false" sync="false" path="." mode="write" />
        <locking version-check="true" />
        <!-- cache: 2048mb/8GByte RAM, 4096mb/16GByte RAM, 8192mb above -->
        <!-- max-threads: number of processor (cores) * 2 -->
        <processing cache="16384mb" max-threads="8" />
        <index-update enabled="true" priority="40" />
        <!-- results: 256mb/8GByte RAM, 1024mb/16GByte RAM, 2048mb above -->
        <query-cache results="4096mb" programs="500" />
        <extensions drop="temp,tmp" />
    </database>

    <entities>
        <enhancement agent="false" reflection="warning" />
        <!-- cache: 2048mb/8GByte RAM, 4096mb/16GByte RAM, 8192mb above -->
        <cache ref="weak" level2="16384mb" />
        <fetch hollow="true" />
        <persist serialization="false" />
        <cascade-persist always="auto" on-persist="false" on-commit="true" />
        <dirty-tracking arrays="true" />
    </entities>

    <schema>
    </schema>

    <server>
        <connection port="6136" max="100" />
        <data path="$objectdb/db" />
        <!--
        <embedded-server enabled="true" />
        -->
        <!--
        <replication url="objectdb://localhost/test.odb;user=admin;password=admin" />
        -->
    </server>

    <users>
        <user username="admin" password="admin">
            <dir path="/" permissions="access,modify,create,delete" />
        </user>
        <user username="$default" password="$$$###">
            <dir path="/$user/" permissions="access,modify,create,delete">
                <quota directories="5" files="20" disk-space="5mb" />
            </dir>
        </user>
        <user username="user1" password="user1" />
    </users>

    <ssl enabled="false">
        <server-keystore path="$objectdb/ssl/server-kstore" password="pwd" />
        <client-truststore path="$objectdb/ssl/client-tstore" password="pwd" />
    </ssl>

</objectdb>
#2

The options are there because different settings are needed in different situations. Therefore, the only way to know what works better for a specific application is to try different settings.

If you have sufficient RAM but temporary files are used a higher general:temp:threshold value can reduce temporary files usage. The L2 cache does not always help so you can try with and without (i.e. disabled). The query result cache is effective if your application repeats same queries (with the same parameters) often. i.e. before the relevant data is changing. In applications with frequent data change and low repeating it will not help, etc.

 

ObjectDB Support

Reply