CloudTran Home

<< Back Contents  >  8.  Management and Performance Tuning Forward >>

8.3 The most significant attributes

This section covers the most significant tunable parameters. These can significantly change application performance.

 8.3.1  Tunable attributes
 8.3.2  Read only attributes

8.3.1  Tunable attributes
ThreadsPerDatasource The number of persistence threads per datasource. Each thread uses the JDBC driver independently, to send data to the datasource. If you have two datasources, the total number of persist threads will be twice this number.

The starting value for threads per data source is set in the config property ct.persist.threadsPerDatasource.

If this number is increased more threads will be available for each datasource to persist data into the datasource. If this number is set to too low( e.g. 1-2), the performance of the application will decrease significantly. Eventually, the transaction manager will be throttled by datasource performance, because there is a maximum number of incomplete transactions limit (see the ct.txb.maxTransactions config property).

QueueLength The number of transactions waited to be processed by the datasource store threads.

If this is too high the followings are possible:

  • There are not enough datasource store threads. Increase it.
  • The database can not handle the the incomming SQL batches requests fast enough.
  • The nework connection is not fast enough to keep up with the requests.

MaxObjectsPerDsTransaction The maximum number of SQL operations that can be performed in a datasource store thread batch.

Tuning this will also can result in dramatic changes, setting this number too high e.g.: 2000 might decrease the application performance depending on the datasource.

CommitOrAbortThreadCount The number of 'commit or abort' threads per routing entry.

If this number is too low it is possible that the system can not send transaction infromation fast enough to the cohort. Generally 3 is enough.

LogThreadCount Number of threads used to perform transaction logging. If LogBeforeCommit is true this value should be never set to 0.

Generally 1 logger thread is enough to deal with the load, but in special cases it might be useful to increase this number. As the logging also involves serializing the transaction data, it is possible that using 2 or 3 logger threads results in better performance if for example writing to the disk also means that we have to send the data over the network.

MicrosPerLogwrite The number of microseconds the logthread is held before performing the write. This value should be set according the speed of the disk.

For example, assume that this number is 10,000µs = 10ms. In this case the logger will collect transactions for at least 10ms (minus the LogwriteBufferTime) and only after that issues the write to the disk. If the rotational delay of our disk is 7ms then an inital property to set here would be 7ms, trying to rung the disk at maximum efficiency. Our experience is that the optimal log write time is not easy to deduce from the drive manufacturers specifications, so this property is one that you should probably tune.

LogwriteBufferTime The buffer time in microseconds allowing the LogThread to get ready to write. The amount of time the LogThread spends collecting data to write is calculated as 'MicrosPerLogwrite' - 'LogwriteBufferTime'.

MaximumActiveSubtransactions The maximum number of subtransactions allowed in the actual processing unit.

8.3.2  Read only attributes
AllowServiceCalls True if the coordinator is allowing service calls. This is normally true. It goes false while a PU is failing over or scaling out.
OpenForBusiness True if
  • the coordinator and all other PUs in the application, both primary and all backups, have started up
  • all the PUs have successfully communicated
  • the initialisation sequence has completedis started up and made successful connection to the other processing units.
This is set at start of day. Once it is set, it stays set (for this run of the application).
TxCommittedPerSecond The calculated number of committed transactions per second.
TxCompletedPerSecond The calculated number of completed transactions per second.
FreeTransactionSlots The number of new transactions that can be started in the system. Calculated from MaximumIncompleteTransactions - active number of transactions in the system.
DiskWriteTime The measured time in milliseconds for the logthread to write the batch of transaction logs to the disk.

If this number is much higher than your disk's rotational delay then you might have to log to a drive that is not used by other applications or the OS for paging.

Copyright (c) 2008-2013 CloudTran Inc.