Controlling the memory buffers used by a messaging engine

Every messaging engine manages two memory buffers that contain messages and message-related data. We can improve the interaction of a messaging engine with its data store by tuning the properties that set the sizes of the two buffers. We can set the following properties to improve the interaction of a messaging engine with its data store:

sib.msgstore.discardableDataBufferSize

The size in bytes of the data buffer that the messaging engine uses to contain data for which the quality of service attribute is best effort nonpersistent. The default value is 320000, which is approximately 320 kilobytes.

The discardable data buffer contains all data for which the quality of service attribute is best effort nonpersistent. That data comprises both data that is involved in active transactions, and any other best effort nonpersistent data that the messaging engine has neither discarded nor consumed. The messaging engine holds this data entirely within this memory buffer and never writes the data to the data store. When the messaging engine adds data to the discardable data buffer, for example when the messaging engine receives a best effort nonpersistent message from a client, the messaging engine might discard data already in the buffer to make space. The messaging engine can discard only data not involved in active transactions. This behavior enables the messaging engine to discard best effort nonpersistent messages.

Increasing the size of the discardable data buffer allows more best effort nonpersistent data to be handled before the messaging engine begins to discard messages.

If the messaging engine attempts to add data to the discardable data buffer when insufficient space remains after discarding all the data not involved in active transactions, the messaging engine throws a com.ibm.ws.sib.msgstore.OutOfCacheSpace exception. Client applications can catch this exception, wrapped inside API-specific exceptions such as javax.jms.JMSException.

sib.msgstore.cachedDataBufferSize

The size in bytes of the data buffer that the messaging engine uses to contain data for which the quality of service attribute is better than best effort nonpersistent and that is held in the data store. The default value is 320000, which is approximately 320 kilobytes.

The purpose of the cached data buffer is to optimize the performance of the messaging engine by caching in memory the data that the messaging engine might otherwise have to read from the data store. As it writes data to the data store and reads from the data store, the messaging engine attempts to add that data to the cached data buffer. The messaging engine might discard data already in the buffer to make space.

sib.msgstore.transactionSendLimit

The maximum number of operations that the messaging engine includes in each transaction. For example, each JMS send or receive is an operation that counts towards the transaction send limit. The default value is 100.

The messaging engine uses approximate calculations to manage the data it holds in the memory buffers. Neither of the DataBufferSize properties gives an accurate indication of the amount of memory that the messaging engine consumes in the JVM heap. The messaging engine can consume considerably more heap storage than the DataBufferSize properties indicate. To set the properties of a messaging engine to improve its interaction with its data store, use the admin console to complete the following steps:

 

  1. In the navigation pane, click Service integration > Buses > bus_name > [Topology] Messaging engines > engine_name > [Additional Properties] Custom properties .

  2. Type the name of the property to set.

  3. Type the value to set for that property.

  4. Click OK.

  5. Save the changes to the master configuration.

 

Next steps

Remember: When you change any of these properties, the new values do not take effect until you restart the messaging engine.    



Last updated Nov 10, 2010 8:23:07 PM CST