Past versions of Retail Pro Prism (1.14.6 and below) use a 32-bit version of the Erlang VM upon which RabbitMQ depends to function. With the 32-bit version of Erlang, RabbitMQ's high memory watermark is limited to 819 MB.

Retail Pro Prism servers which replicate data with many other RP Prism servers can encounter an issue where all 819 MB are used. When this happens RabbitMQ will stop allowing messages to be published. This effectively stops data replication until the memory usage drops below the high memory watermark.

This issue can be prevented by installing the 64-bit version of Erlang, which will allow the high memory watermark to be set to a percentage of total system memory.

RP Prism versions 1.14.7 and above will use the 64-bit version of Erlang by default.

Below are the upgrade steps to install the 64-bit version of Erlang.

 

How to upgrade to the 64-bit version of Erlang

 

1: Determine current Erlang version by logging into RabbitMQ and checking the Erlang version in the upper right corner.

Verify Erlang version in RabbitMQ

 

2: Download the 64-bit binary for the same version of Erlang which is currently installed from https://www.erlang.org/downloads

 

3: Run the Erlang 64-bit installer. Make sure the installation directory is C:\Program Files\erl8.1\ and NOT C:\Program Files (x86)\erl8.1\

 

4: Edit the following registry key to point to the new Erlang executable.

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Ericsson\Erlang\ErlSrv\1.1\RabbitMQ\Machine

Edit the registry key

 

5: Stop and Start the RabbitMQ service.

 

6: Log into RabbitMQ and check the high memory water mark. It should be 40% of total system memory.

Check the high memory water mark

 

Optional: If you wish the high memory water mark to be something other than 40% of total system memory you may edit the rabbitmq.config and add the following configuration.

 

vm_memory_high_watermark sets RabbitMQ's high memory water mark to a percentage of the total system memory. (Ex. 0.2 = 20% of total system memory)

vm_memory_high_watermark_paging_ratio sets the point at which RabbitMQ will attempt to free up memory by instructing queues to page their contents to disk. (0.5 = 50% of the high memory watermark)

Edit: C:\ProgramData\RetailPro\Server\RabbitMQ\rabbitmq.config

[
{rabbit, [
{vm_memory_high_watermark, 0.2},
{vm_memory_high_watermark_paging_ratio, 0.5}
]
}
].