Skip to main content
Code42 Support

Improving Performance When Pushing Client Configuration Changes

Applies to:
  • Code42 CrashPlan (previously CrashPlan PROe)

Overview

Pushing (or "publishing") changes to CrashPlan app settings can cause performance problems when there are a large number of CrashPlan apps. At first, the Code42 server may push changes and report the expected progress. However, the Code42 server eventually stops responding to web requests, CrashPlan 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 CrashPlan apps (for example, more than 25,000).

Recommended solution

Increase the throttling rate multiplier, thus slowing the rate at which an master server pushes changes out to CrashPlan 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 master server how long to rest before pushing new settings to the next batch of CrashPlan apps. By default, an master server pushes changes to a batch of 10 CrashPlan 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 master server pushes new settings to CrashPlan apps. That slower rate frees master 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 CrashPlan 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?