Loading...
 

ObjectStore Server Parameters

ObjectStore Server Parameters

In Windows, the parameter values are stored in the registry. The server parameters can either be changed directly in the registry or by using the ObjectStore installer:

Control panel → Programs and functions → ObjectStore... → Change → Next → Select "Yes - change Server parameters", Next. In the following window, server parameters can be selected on the left side, which can then be adjusted with the "Edit Value" button.

The dialogue can then be ended by pressing OK → Next → Next → Next → Next → Finish.

Changing values with the setup of ObjectStore: Changed values are only active after a restart of the server. (Server parameters can also be transferred to the server as a text file. This method is not recommended).
Query the current server parameters with ossvrstat host_name -parameters - see example.

The transaction log of the server should never be on the same drive as other databases!

For most parameters the default value is correct.

Others should be adapted to the specific environment, with the aim of improving the behaviour of the server in the following actions:

  1. Minimise IO operations in the transaction log
  2. avoid repeated start/stop of threads (server threads for IO handling)
  3. Exclude waiting cycles in network communication.

Target 1 - as little IO as possible when reading in the transaction log

Propagation Buffer Size: find as large a value as possible - so that reading is done almost exclusively in the buffer.
But: too high a value triggers memory page swapping of the OS.

Control with Process Explorer (see figure).

Objective 2 - Avoid starting and stopping threads:

Increase value for Max AIO Threads. This should correspond to the number of database files open at the same time. Note that this number also includes schema databases.

ClassiX® uses 4 schema databases (SCHEMA_M.adb, SCHEMA_B.adb, schema_o.adb and SCHEMA_X.adb), ObjectStore also uses 4 schema databases (osdynext_evol.adb, osquery.adb, ossevol.adb and os_coll.adb). Thus, 8 more databases have to be added to the databases specified by CX_DATABASE*. The value should never be < 10.
Observation of the threads (observe with the Process Explorer) resulted in the suggested value of 30.

Note: Not all threads of the ObjectStore server are IO threads! The value for Max AIO Threads is too small if threads are constantly restarted and terminated.

Objective 3 - Optimise network communication

N Increase Message Buffer and Message Buffer Size until ossvrstat no longer shows "Message buffer wait".

Control with ObjectStore utility ossvrstat.

Set Preferred Network Receive Buffer Size and Preferred Network Send Buffer Size to maximum value.
The same value for OS_RCVBUF_SIZE and OS_SNDBUF_SIZE for all clients (recommendation of ObjectStore).

recommended values:

Parameters recommended value Notes
Propagation Buffer Size 1048576 sectors = 512 MB

This is maximum value for Win 32 Platform. Reduce if memory swapping occurs.

Log Data Segment Max Size 16777216 segments = 8192MB 4 * Default value (also allows very long transactions, see notes)
N Message Buffers 30 at ≈ 200 clients no wait
Message Buffer Size 2048 sectors = 1 MB
Max AIO Threads 30 With default value=3 threads are constantly restarted
Preferred Network Receive Buffer Size 65536 bytes Same value for client parameter OS_RCVBUF_SIZE and OS_SNDBUF_SIZE
Preferred Network Send Buffer Size

Notes on important parameters of the ObjectStore Server

For the normal operation of the ClassiX® system, we always recommend the standard value.

Log Data Segment Max Size
refers to the maximum size of the transaction log (osserver.log)

The size of a data segment in the transaction log is 512KB.
Default value = setting after installation is 4194304, which corresponds to 2 GB.

The ObjectStore Server automatically enlarges this file if necessary. It will never get smaller again - to save the overhead for re-enlargement. Only when the specified maximum value is reached does the transaction concerned abort with an error message. For very large reorganisation runs in a transaction - duration 6 hours or longer - this limit is actually reached. Therefore the parameter should be enlarged before (ObjectStore allows 2TB as maximum). At the same time RPC timeout must be increased, because writing back the data after an extremely long transaction also takes a long time.

Example values: Log Data Segment Max Size = 67108864 (this is 64MB), RPC timeout = 14400.
Then reset to the default values!

Is there anything to be said against setting the parameters to a higher value from the outset?

Log Data Segment Max Size - Yes. The server makes the transaction log as large as necessary anyway. If it becomes extremely large during "normal operation", there is an undesirable reason to do so: at least one client keeps a transaction open for hours or days. With the maximum limit of 2TB you would notice this very late.

RPC Timeout - Very much! This parameter has influence on when
a client that is no longer responding is detected.

Cache Manager Ping Time
The default value is 300 (in seconds). Until now it was recommended to reduce the value to 60, so that non-responding clients holding a lock are detected faster by the server. The price is a higher network load. If there are still inactive clients with lock, Cache Manager Ping Time=60 is a workaround as long as this error is not fixed. Recommended is the default value.

Max Data Propagation Per Propagate
With default 0 the server calculates this value: 0.1 * Propagation Buffer Size. A smaller value favours read operations to the detriment of write operations, a larger value is the opposite. This balance is difficult to estimate - recommendation is standard.

Max Memory Usage
Standard is 0 - the ObjectStore Server takes as much memory as it can get from the operating system. This is exactly the desired behaviour. So never change this value.