Store Action Queues in Memory

Some Knowledge Discovery components support asynchronous actions. Asynchronous action requests are stored in queues until threads become available to process them. There is one queue for each action. These queues are usually stored in a datastore file or in a database hosted on a database server, but in some cases you can increase performance by storing these queues in memory.

NOTE: Storing action queues in memory improves performance only when the server receives large numbers of actions that complete quickly. Before storing queues in memory, you should also consider the following:

  • The queues (including queued actions and the results of finished actions) are lost if the server stops unexpectedly, for example due to a power failure or the component being forcibly stopped. This could result in some requests being lost, and if the queues are restored to a previous state some actions could run more than once.
  • Storing action queues in memory prevents multiple instances of a component being able to share the same queues.
  • Storing action queues in memory increases memory use, so ensure that the server has sufficient memory to complete actions and store the action queues.

If the component stops cleanly, Knowledge Discovery writes the action queues from memory to disk so that it can resume processing when it is next started.

To store action queues in memory

  1. Stop the component, if it is running.
  2. Open the configuration file and find the [Actions] section.
  3. If you have set any of the following parameters, remove them:

    • AsyncStoreLibraryDirectory
    • AsyncStoreLibraryName
    • ConnectionString
    • UseStringentDatastore
  4. Set the following configuration parameters.

    UseInMemoryDatastore A Boolean value that specifies whether to keep the queues for asynchronous actions in memory. Set this parameter to TRUE.
    InMemoryDatastoreBackupIntervalMins (Optional) The time interval (in minutes) at which the action queues are written to disk. Writing the queues to disk can reduce the number of queued actions that would be lost if the component stops unexpectedly, but configuring a frequent backup will increase the load on the datastore and might reduce performance.

    For example:

    [Actions]
    UseInMemoryDatastore=TRUE
    InMemoryDatastoreBackupIntervalMins=30
  5. Save and close the configuration file.

    When you start the component, it stores action queues in memory.