Memory performance parameters for the configuration file

This section describes how to configure the IXIASOFT TEXTML Server parameters that directly impact memory performance.

There are two methods for determining the maximum amount of memory that TEXTML Server can use at any time: using the CacheMaximumMemory parameter or using the LeaveFree parameter.

Using CacheMaximumMemory

The CacheMaximumMemory parameter specifies the maximum amount of memory, in megabytes, that TEXTML Server may use. Note that TEXTML Server will try to reserve this memory, whether it is available or not.

For example, if CacheMaximumMemory is set to 20 GB, but only 12 GB are physically available, TEXTML Server will be very slow, since the operating system will swap physical memory for memory on disk ("swap space"). Note that, if the Windows-specific parameter ForceMainMemory is set to True, TEXTML Server will crash, because the ForceMainMemory prevents Windows from swapping memory (applies to Windows only).

Using LeaveFree (i.e., setting CacheMaximumMemory is set to 0)

When CacheMaximumMemory is set to 0, TEXTML Server ensures that the amount of memory specified by the LeaveFree parameter (in megabytes) is always available. The memory available is determined by adding the free physical memory available on the machine to a percentage of the cache available (according to the PercentCacheToUse value).

If the amount of memory available is less than the value of the LeaveFree parameter, then TEXTML Server reduces its cache to make sure that the amount of memory specified by the LeaveFree parameter is available. If the amount of memory available is more than the value of the LeaveFree parameter, then TEXTML Server will use the extra memory until it reaches the value of the LeaveFree parameter.

Using this parameter can be useful when you cannot predict how much RAM will be available on the system (for example, in a cluster failover).

It can nevertheless be an issue if TEXTML Sever is running on the same machine as other server software (e.g. SQL server) as this server will tend to force the reduction of TEXTML Server memory footprint by expanding its memory usage when under load. This is one of the reasons why it is not recommended to run TEXTML Server alongside other server software.

Note: If a value other than 0 is specified in CacheMaximumMemory, the LeaveFree value is ignored.

Recommended values

Table 1 provides the recommendations for the memory parameters. The memory configuration depends on the size of TEXTML Server. These recommendations are based on three typical TEXTML Server sizes:
  • Low RAM size: 10 GB of RAM
  • Medium RAM size: 24 GB of RAM
  • High RAM size: 64 GB of RAM
Note: A docbase of 30 GB is assumed.
Table 1. Memory parameters
Field Description Low Med High
DocumentBaseProperties 
 /Cache 
  /LeaveFree
Specifies the amount of physical memory, in megabytes, that TEXTML Server tries to keep free in the overall system by adjusting the cache size. This value configures TEXTML Server to use the memory that is available; using this parameter can be useful when you cannot predict how much RAM will be available on the system (for example, in a cluster failover).

LeaveFree is ignored if a value is specified in CacheMaximumMemory.

1500 n/a n/a
DocumentBaseProperties 
 /Cache 
  /ReduceCacheOnIdle
Specifies that when TEXTML Server exceeds its maximum memory allowed it should reduce its memory footprint when idle (strongly recommended to set as true). True True True
DocumentBaseProperties 
 /Cache 
  /CacheMaximumMemory
If set to a value other than 0, specifies the maximum amount of memory, in megabytes, that TEXTML Server may use. Note that TEXTML Server will try to reserve this memory, whether it is available or not. (See also ForceMainMemory.)

If set to 0, TEXTML Server ensures that the amount of memory specified by the LeaveFree parameter (in megabytes) is always available. The memory available is determined by adding the free physical memory available on the machine to a percentage of the cache available (according to the PercentCacheToUse value).

0 20000 40000
DocumentBaseProperties 
 /Cache 
  /ForceMainMemory

This parameter applies to Windows only.

False (see note 1) True True
/DocumentBaseProperties
  /Cache 
   /AllocateMultiplePools
Specifies whether a docbase uses multiple cache pools, which increases performance but requires more memory. See to True to use this feature.

Set to False if your deployment uses a low-RAM server (less than 10 Gig) and more than one docbase is installed on this server.

False True True
/DocumentBaseProperties 
 /Preload
Specifies the components of a docbase that should be preloaded in memory when TEXTML Server is started. Valid values are:
  • None: Do not preload any component.
  • Indexes: Preload indexes. This setting will increase the performance of all operations that are dependent on indexes such as the indexing process, search, get documents data, etc.
  • Store: Preload all the documents in the repository collection. This setting will increase the performance of all document operations, such as get documents data.
  • All: Preload indexes and store.
None Index All
Note: Setting ForceMainMemory to True forces Windows to allocate non-swappable memory. Therefore, if there are many processes on the server, and these processes use a lot of RAM, you may need to set this parameter to False for low-RAM deployments if you see performance issues.

Example for a high-RAM TEXTML Server

<TextmlServer>

   <Server>
    ...
   </Server>
   <DocumentBaseProperties>
      <Cache>
         <FlushFrequency>10</FlushFrequency>
         <PoolSize>4</PoolSize>
         <LRUTimeOut>300</LRUTimeOut>
         <DefragCache>True</DefragCache>
         <WaitBeforeFlush>5</WaitBeforeFlush>
         <ShrinkPercentage>10</ShrinkPercentage>
         <LeaveFree>0</LeaveFree>
         <PercentCacheToUse>80</PercentCacheToUse>
         <ReduceCacheOnIdle>True</ReduceCacheOnIdle>
         <CacheMaximumMemory>40000</CacheMaximumMemory>
         <CacheMinimumMemory>1500</CacheMinimumMemory>
         <ForceMainMemory>True</ForceMainMemory>
         <Trace>False</Trace>
         <AllocateMultiplePools>True</AllocateMultiplePools> 
      </Cache>
      ...
      <IndexPreviousVersionsInfo>False</IndexPreviousVersionsInfo>
      <Preload>All</Preload>

  ...