Best Practices for Configuration of PrismMQ and POSV1 Services in Retail Pro Prism

Best Practices for Configuration of PrismMQ and POSV1 Services in Retail Pro Prism

 

PrismMQ and POSV1 are Retail Pro Prism services. By configuring these services, RP Prism will be able to function as efficiently as possible.

 

PrismMQ Recommended Configurations

The PrismMQService.ini file has key settings related to data replication. You can configure the PrismMQService.ini file at …\ProgramData\RetailPro\Server\conf.

The properties, along with their default and recommended settings are listed below.

Certain settings are only present when Retail Pro Prism DRS is installed. It is not present on MySql systems, so services are split into RP Prism Settings and RP 9 and RIL Settings.

 

 

Best Practice Configurations of Services

Download PDF
 

                                                                                                        RP Prism Settings

Property

Possible Values

Default/Recommended

Purpose

Initialization Threads Per Sender
INITSENDTHREADCNT

1 to number of CPU cores

               5/5

Set the Initialization Threads Per Sender to 5 or the number of cores you have allocated if you allocate more than 5.

Initialization Max Senders
INITSENDTHREADCNT

Positive Number

                5

Number of threads that can run simultaneously sending data for initialization
Max Threads = 10
If using Server Mode, Max Threads = CPU Count

Initialization Max Receivers
INITRECVTHREADCNT

Positive Number

               10

Number of threads that can run simultaneously receiving data for initialization.
Max Threads = 30
If using Server Mode, Max Threads = CPU Count

Initialization Max Retries
INITMAXRETRIES

Positive Number

            20/10

DEPRECATED. Maximum number of retries is NO LONGER USED. Remove from file.

Initialization Batch Size
MESSAGEBATCHSIZE

Positive Number

             25/200

How many messages to read from the database and process at a time. Also affects logging or progress, as a log entry is only written as each batch is processed. If set too high, memory issues could occur.

Day-to-Day Max Receivers
D2DRECVTHREADCNT

Positive Number

              1/10

Number of threads that can run simultaneously receiving data for Day to Day.
Max Threads = 20
If using Server Mode, Max Threads = CPU Count

Day-to-Day Max Retries
D2DMAXRETRIES

Positive Number

               5/5

Maximum number of retries before failing

Day-to-Day Producer Interval
D2DPRODUCERINTERVAL

Positive Number

             10/10

How often (in seconds) to scan data event queues on RP Prism side for outgoing changes.

Preserve Successful Records
PRESERVESUCCESSRECORDS

TRUE, FALSE

              FALSE

Determines whether users will see successful records and errors, or only errors. The default value is False, meaning successful records are not preserved. Keeping the default value of False is important for customers with large data sets. If set to true, large quantities of unneeded data (sometimes millions of rows) could be preserved. When you run initialization and everything is successful, but the property is set to False, you will see the completed message in the RIL Initialization Dashboard but you will not see success records

Initialization Guaranteed Message Delivery
INITGUARANTEEDMESSAGEDELIVERY

TRUE, FALSE

       FALSE/TRUE

Guarantee that no messages are lost if RabbitMQ goes down. This setting is used in tandem with the Resume Initialization at Startup.

Resume Initialization at StartupRESUMEINITONSTARTUP

TRUE, FALSE

          TRUE/TRUE

If a consumer goes down during an initialization, having ResumeInitOnStartup set to True ensures that the consumer will resume initialization automatically upon restart.

VERY IMPORTANT: In tandem with this property the user must also set the INIGUARANTEEDMESSAGEDELIVERY to True on the sending server for the desired initialization type (RIL to RPP or RPP to RPP) to guarantee that no messages are lost if RabbitMQ goes down.

For example, if you start an initialization and realize the consumer's 20-thread default is too low for the power of the machine, you can now pause that consumer, change the thread count and then resume the consumer. Initialization will pick up where it left off with the new thread count. Also, if a consumer goes down or stops responding, initialization can be resumed either automatically or manually by the user when PrismMQ restarts.


If GMD is False, some messages may be lost in the event of a RabbitMQ Failure (not just a PMQ failure). A restart of initialization will likely get stuck and will not complete. You will then have to cancel initialization and restart from the last completed resource.

 

NOTE: YOU CANNOT PAUSE THE SENDER, BUT EACH DOWNSTREAM CONSUMER SYSTEM CAN NOW BE PAUSED AND OR RESUMED.

 

 

                                                                                                         RP9 and RIL Settings

Property

Possible Values

Default/Recommended

Purpose

Initialization Batch Size
MESSAGEBATCHSIZE

Positive Number

             25/25

How many messages to read from the database and process at a time. Also affects the logging or progress, as a log entry is only written as each batch is processed. If set too high, memory issues could occur.

Initialization Max Senders
INITSENDTHREADCNT

Positive Number

                1/5

Number of sender threads that can be spun up simultaneously. If the user would like the ability to initialize multiple RP Prism servers simultaneously, this number needs to be raised.

Note: when initializing multiple RP Prism Servers, all connections to the RP Prism servers must be successful, or else this will result in the initialization failure to ALL the RP Prism Servers. For this reason, it may be advisable to initialize one RP Prism server at a time.
This setting helps prevent the server from being overwhelmed. If you change the setting, be careful not to set it so high that the server or RabbitMQ are overwhelmed.
If you exceed this number, for example by trying to initialize a server while another server's initialization is in progress, the initialization will fail and an error message is written to the log.
Max Threads = 10
If using Server Mode, Max Threads = CPU Count

Day-to-Day Max Receivers
D2DRECVTHREADCNT

Positive Number

              5/10

Number of threads that can run simultaneously receiving data for Day to Day.
Max Threads = 20
If using Server Mode, Max Threads = CPU Count

Day-to-Day Max Retries
D2DMAXRETRIES

Positive Number

               5/5

Maximum number of retries that will be attempted before failing.

Preserve Successful Records
PRESERVESUCCESSRECORDS

TRUE, FALSE

               FALSE

Determines whether users will see successful records and errors, or only errors for both initialization and Day to Day. The default value is False, meaning that successful records are not preserved. Keeping the default value of False is important for customers with large data sets. If set to true, large quantities of unneeded data (sometimes millions of rows) could be preserved. If set to False, when you run initialization and everything is successful, you will see the completed message in the RIL initialization dashboard but no success records.

Pub Update Interval
UPDATEPUBTABLESINTERVAL

Positive Number

           100/600

How often (in seconds) to scan 1st level DRS logs to catch changes coming from RIL side.

Initialization Guaranteed Message DeliveryINITGUARANTEEDMESSAGEDELIVERY

 

 

TRUE, FALSE

         TRUE/TRUE

If a consumer goes down during an initialization, having ResumeInitOnStartup set to True ensures that the consumer will resume initialization automatically upon restart.

VERY IMPORTANT: In tandem with this property the user must also set the INIGUARANTEEDMESSAGEDELIVERY to True on the sending server for the desired initialization type (RIL to RP Prism or RP Prism to RP Prism) to guarantee that no messages are lost if RabbitMQ goes down.

For example, if you start an initialization and realize the consumer's 20-thread default is too low for the power of the machine, you can now pause that consumer, change the thread count and then resume the consumer. Initialization will pick up where it left off with the new thread count. Also, if a consumer goes down or stops responding, Initialization can be resumed either automatically or manually by the user when PrismMQ restarts.
If GMD is False, some messages may be lost in the event of a RabbitMQ Failure (not just a PMQ failure). A restart of initialization will likely get stuck and will not complete. You will then have to cancel initialization and restart from the last completed resource.


NOTE: YOU CANNOT PAUSE THE SENDER, BUT EACH DOWNSTREAM CONSUMER SYSTEM CAN NOW BE PAUSED AND/OR RESUMED. These properties default to True. If these properties are set to False, pausing and resuming initialization will still work if RMQ on a given consumer does not go down.

 

 

                                                                                                            General Descriptions

Property

Description

Receive Timeout

Time to wait between receives

Compression Threshold

Helps improve performance when replicating large files, such as a large Promotions file. You can select to compress payloads above the selected size (default 100k).

Server Mode

The Server Mode configuration option for the PrismMQ service helps improve performance for high-performance, multi-CPU systems (four CPU cores or more) when high-throughput and increased processing power are needed. For example, during initialization the server is trying to quickly import and process many records. However, Windows default power management settings can end up throttling performance on high-performance machines. Server Mode enables you to bypass some of these default Windows power management settings so servers can make more efficient use of available computing resources.
Enabling Server Mode results in increased CPU usage. We recommend enabling Server Mode only when it is needed and disabling it when no longer needed.
Limitations
Limited to systems with four CPU cores or more.
Server Mode is intended for dedicated server machines, not machines used as both a server and workstation.
Intended for use on a temporary basis when increased processing power and throughput are needed.
By default, the thread counts for RP Prism and RIL Day-to-Day and Initialization are set to half the CPU Count (CPU Count / 2). This setting ensures that RP Prism will not consume excessive CPU power when first installed.
When Server Mode is enabled, the maximum thread count for RP Prism and RIL Day-to-Day and Initialization is set to one fewer than the total number of CPU cores (CPU Count - 1). Consumer threads will spin up as needed and spin down when no longer needed.
If Server Mode is later disabled, thread counts will reset to the defaults. (Five threads for Day-to-day, 20 for initialization).

Host Name

Server name

 

RP Prism POSV1 Recommended Configurations

This service handles POS-related tasks, Physical Inventory and a few other inventory-related tasks.

The POSv1Service handles the RPC Methods and REST Resources that are listed in the RPSRESTSERVICEMODULE area of the RP Prism API Explorer.

This service has settings related to thread counts and timeouts. The purpose of these entries is to control how much memory is allocated to a given RPS instance. In our 32-bit architecture, each instance is limited to a maximum of 2 GB of memory.

Transform is a very heavy resource and has a defined limit that we believe will be adequate for most circumstances.

Auth threads are only applicable to the primary instance and define how many auth requests can occur simultaneously.

 

Property

Possible Values

Default/Recommended

Purpose

LOGLEVEL=2

0 = None

1 = Errors Only

2= Min

3 = Verbose

2 is Recommended

How much logging to produce

LIVELOGGING

TRUE, FALSE

FALSE, FALSE

Used with Codesite.

CODESITEACTIVE

TRUE, FALSE

FALSE, FALSE

Denotes whether Codesite is installed and active. Default is FALSE, TRUE if installed and active.

DEBUGSTACKTRACEACTIVE

TRUE, FALSE

FALSE, FALSE

Output a stack trace for debugging purposes for all exceptions thrown, even those that are swallowed and not normally surfaced. Do not change.

BUFFERSIZE

0-500

0 = No buffer, all entries written to disk

500 is Recommended

 

MAXENTRYLENGTH

0-100000

10000 is recommended

How many entries are in the file

LOGTIMING

TRUE, FALSE

FALSE is recommended

Output timings for parts of the system in the log file; debugging only.

RetainXLogs

0-100

9 is Recommended

How many logs will be retained

AUTHTHREADCNT

Positive Number

10

The default number of threads that can run. Increase only if there is thread contention, typically when there is a large number of users creating and updating sales documents simultaneously. Increasing will also impact the overall memory usage, so add only a few threads at a time.

V1TRANSFORMTHREADCNT

Positive Number

1

Transform thread count - do not change

RECVTHREADCNT

Positive Number

5

Increase only if there is thread contention, typically when there is a large number of users creating and updating sales documents simultaneously. Increasing will also impact the overall memory usage, so add only a few threads at a time.

V1CUSTOMERTHREADCNT

Positive Number

20

Number of threads that can be used to run the service. Increase only if there is thread contention, typically when there is a large number of users creating and updating sales documents simultaneously. Increasing will also impact the overall memory usage, so add only a few threads at a time.

V1DOCUMENTTHREADCNT

Positive Number

20

Increase only if there is thread contention, typically when there is a large number of users creating and updating sales documents simultaneously. Increasing will also impact the overall memory usage, so add only a few threads at a time.

AUTHONLYPRIMARY

FALSE

FALSE

Do not change.

Published on Dec 3, 2019 in Best Practices

 

Find Another Article