Managing queue memory parameters

Adjustment of the parameters is not expected for most common deployment scenarios.

Each document flow element in ION has one or more queues that are linked. ION uses these internal queues to decouple processing steps and simultaneously provide guaranteed delivery. For storage the queues use the Infor_<farmname>_ION database, where each queue has its own set of tables.

When processing a BOD by a queue:

  • A particular queue receives a BOD it keeps the BOD in memory and for persistent reasons stores it in the database. The available memory is defined by the queue.memory.limit parameter, by default 64Mb. If that memory is full the queue cannot keep all BODs in memory.
  • A queue is requested to provide a BOD to the reading process. The BOD is taken from memory and if not available, read from the database. When, the message is processed the BOD will be removed from the database or memory.

The Queue node is managing the JMS (Server) and OneView queues. The Connect node is managing the other document flow element queues. For performance reasons the Queue nodes keeps the BODs to process in memory to avoid reading messages (BODs) from the database.

Reading messages from the database affects the performance. For regular processing we recommend that you prevent this. Only for bulk processing, such as initial loads or daily synchronization it might be unavoidable.

Apart from the limits of the queue, the Max Heap Size of the Queue node and Connect nodes are adjustable.

Three important parameters that are related to the memory usage of the queues:

  • The queue.memory.limit as described earlier defines the maximum queue memory available.
  • The broker.memory.usage defines per broker the maximum available memory. In the case of ION use the formula: broker.memory.usage = queue.memory.limit * 2
  • The MaxHeapSize of the Nodes specifies how much memory all queues together can use. As a rule of thumb you can the formula: Node Max Heap size = queue.memory.limit * # of expected queues * 40%

The Max HeapSize of the Queue Node can be adjusted through the grid management UI.

For more information, see Modifying the java heap space.

Maintain the queue.memory.limit and broker.memory.usage parameter in the InforIONCBM database, table ION_PROPERTY.

Use this script to update the values:
/****** Update queue,memory.limit parameter  SQL Server ******/
declare @maxmemory int
set @maxmemory = <max queue memory in bytes, default 67108864>
update  [InforIONCBM].[dbo].[ION_PROPERTY]
set C_VALUE = @maxmemory  
where C_PID = 'ion.queues' and C_KEY = 'queue.memory.limit'
update [InforIONCBM].[dbo].[ION_PROPERTY]
set C_VALUE = @maxmemory * 2
where C_PID = 'ion.queues' and C_KEY = 'broker.memory.usage';