InterChange Server features a memory checker thread that you can use to regulate how events are processed by the system and thereby regulate the consumption of system memory. This can mitigate the risk of system crashes due to lack of memory.
The memory checker thread periodically measures the amount of memory used by InterChange Server and evaluates if it is within an acceptable configured range. If memory usage is not within an acceptable range then the memory checker thread manages system components to reduce the memory usage.
If the memory usage exceeds a lower threshold specified by the lower threshold then the memory checker thread causes the event listener threads of the connector controllers in the system to sleep for a configurable maximum amount of time. The amount of time varies depending on how much the memory usage exceeds the lower threshold, but does not exceed the amount of time specified by the Connector pause time at threshold property. By causing the event listener threads to sleep in this way, the memory checker thread slows down the rate at which events are delivered to InterChange Server and reduces the risk of the upper memory threshold being exceeded.
If the memory usage exceeds the upper threshold specified by the Memory lower threshold percent property then the memory checker thread pauses the connectors in the system. When connectors are paused they continue to process business objects that are currently queued, but they do not poll new events. The connectors therefore reduce the number of queued business objects and thereby reduce the amount of memory in use, without using more memory to process new business objects. The connectors remain paused for a minimum amount of time specified by Connector pause time at threshold property. When the interval specified by the Connector pause time at threshold property passes, the memory checker thread examines memory usage again. If the memory usage does not exceed the upper threshold anymore then the memory checker thread starts the connectors again. If the memory usage still exceeds the upper threshold, however, the memory checker thread allows the connectors to remain paused.
The memory checker thread sleeps in between its examination and state management operations for the amount of time specified by the Memory checker sleep time property.
To use the memory checker thread, you must follow the instructions in the following sections:
You must configure the Java parameter CW_MEMORY_MAX in the InterChange Server startup script to set the maximum heap memory that InterChange Server can use. The memory checker thread takes action based on the values of configurable properties that specify percentages of this maximum heap memory amount.
You should set the CW_MEMORY_MAX parameter to the same value specified for the -mx parameter, which specifies the maximum heap size for InterChange Server. By default the CW_MEMORY_MAX parameter is set to same value as the -mx parameter, but if you modify the -mx parameter then you must modify the CW_MEMORY_MAX parameter accordingly.
The following example is from an unmodified start_server.bat startup script for InterChange Server on a Windows computer:
REM This is the -mx param value for the Interchange Server's memory heap set CW_MEM_HEAP=512 REM Start the InterChange Server %CWJAVA% -Djava.ext.dirs=%JRE_EXT_DIRS%;"%MQ_LIB%";"%DB2_LIB%" -Duser.home="%CROSSWORLDS%" -mx%CW_MEM_HEAP%m -DTEAgent=1200 -DCW_MEMORY_MAX=%CW_MEM_HEAP% %ORB_PROPERTY% -classpath %JCLASSES% ServerWrapper -s%SERVERNAME% %2 %3
The CW_MEM_HEAP variable is set to the value 512, and is used to set the -mx parameter, so 512 megabytes of memory are reserved for the Java heap. The CW_MEMORY_MAX parameter is set to the same value by also using the CW_MEM_HEAP variable. Note that the CW_MEMORY_MAX parameter must be proceeded by -D.
You must edit the InterChange Server configuration file to set the properties for the memory checker thread. These properties are exposed on the "Misc" tab of the InterChange Server configuration interface. For more information on configuring InterChange Server, see Configuring miscellaneous properties using System Manager. Do the following in the "Server Memory" pane of the "Misc" tab to configure the memory checker thread:
Figure 106 shows the "Misc" tab and the "Server Memory" properties used to configure the memory checker thread.
Figure 106. Configuring memory checker thread properties
Consider the following information when using the memory checker thread: