Skip to main content
Code42 Support

Improving Performance When Pushing Client Configuration Changes

Available in:

  • CrashPlan PRO
    • Standard
    • Premium
    • Enterprise
Applies to:

Overview

Pushing (or "publishing") changes to Code42 app settings can cause performance problems when there are a large number of Code42 apps. At first, the Code42 server may push changes and report the expected progress. However, the Code42 server eventually stops responding to web requests, Code42 apps get timeout errors when authenticating, and storage node syncs fail.

Affects

Any Code42 server used for pushing configuration changes to a large number of Code42 apps (for example, more than 25,000).

Recommended solution

Increase the throttling rate multiplier, thus slowing the rate at which an authority server pushes changes out to Code42 apps. The slower push rate means the process is less likely to overwhelm the system.

Step 1: Throttle the publishing process

  1. Sign in to the administration console.

  2. Double-click the logo in the upper left corner of the administration console.
    The command-line interface appears in the administration console.
  3. Use the following prop.set command to throttle the configuration change batches sent for processing:

prop.set c42.publishConfigWorker.throttle <rate multiplier> save all

Replace <rate multiplier> with the rate by which the publish is run. The default is 5.0. To allow more time for processing, set the rate higher. The maximum rate multiplier is 9.0.

  1. To verify the new setting, run the following prop.show command:

prop.show c42.publishConfigWorker.throttle

  1. To ensure the new settings take effect on your Code42 server, run the node.restart command.

About the throttle rate multiplier

The prop.set c42.publishConfigWorker.throttle command tells the authority server how long to rest before pushing new settings to the next batch of Code42 apps. By default, an authority server pushes changes to a batch of 10 Code42 apps, then waits for a calculated interval. That interval is the average runtime for the last 20 batches times the rate multiplier. The default multiplier is 5.0.

Increasing the value of the multiplier slows the rate at the authority server pushes new settings to Code42 apps. That slower rate frees authority server resources for other tasks.

Following is an example of the throttling behavior when the default rate multiplier value of 5.0 is used:

  • The first batch of 10 Code42 apps takes 200 ms to complete.
    The process then sleeps for 1s.
  • The second batch of 10 takes 400 ms to complete, making the average 300 ms.
    The process then sleeps for 1.5 s.
  • The third batch of 10 takes 300 ms, making the average still 300 ms.
    The process then sleeps for 1.5 s.
  • The fourth batch of 10 takes 100 ms, making the average 250 ms.
    The process then sleeps for 1.25 s.
  • And so on.

You may need to experiment to find the proper rate multiplier for your Code42 environment. The tradeoff with setting a rate multiplier that is higher than the default is that the publishing jobs will take longer. You can adjust the setting as needed to keep the rate as low as possible while keeping the master responsive.

Following is the duty cycle percentage for various throttle settings:

Throttle Setting (Rate Multiplier)

Duty Cycle %

1

50

2

33.3

3

25

4

20

5

16.7

6

14.3

7

12.5

8

11.1

9

10

Step 2: Set the maximum allowed throttle time

By default, there is no maximum set for how long the system can sleep between sending batches. To limit the amount of time that elapses between sending batches, perform the following steps:

  1. Sign in to the administration console.

  2. Double-click the logo in the upper left corner of the administration console.
    The command-line interface appears in the administration console.
  3. Use the following prop.set command to throttle the configuration change batches sent for processing:

prop.set c42.adaptiveThrottle.maxThrottleTimeMillis <time in milliseconds> save all

Replace <time in milliseconds> with the maximum length of time to sleep between publishing batches. The default value is 1000 milliseconds (or 1 second).

  1. To verify the new setting, run the following prop.show command:

prop.show c42.publishConfigWorker.throttle

  1. Run the node.restart command to ensure the new settings take effect on your Code42 server, .
  • Was this article helpful?