Visit Azul.com Support

Configuring ReadyNow Orchestrator

When you use ReadyNow Orchestrator, JVMs all write profile log candidates to unique profile names on the service. ReadyNow Orchestrator gathers all of the candidates for a profile name and decides which is th best candidate to serve to JVM clients requesting that profile name.

When considering what settings are set on the client versus on the service:

  • Individual JVMs decide when ReadyNow Orchestrator should consider their profile log is a suitable candidate for sharing with other JVMs. They can also override server-side defaults for profile log nomination candidates and maximum profile log size.

  • ReadyNow Orchestrator also controls the rules for where to store ReadyNow profile logs, when to clean up old logs, and service-wide defaults for profile log candidate nomination and maximum profile log size.

Duration Configuration

When you need to specify the duration in time a process takes, use the PnDTnHnMn.nS format, where n is the relevant days, hours, minutes or seconds part of the duration.

Configuring Clean Up of Old Profile Logs

ReadyNow Orchestrator performs automatic cleanup of unused profile logs in order to fit collected data in the configured storage. When the data size in your storage exceeds a threshold, ReadyNow Orchestrator deletes old profile logs, thus guaranteeing that a promoted profile log is available for all profile names.

You can also configure ReadyNow Orchestrator to delete unused profile names completely after a given duration using the readyNowOrchestrator.cleaner.keepUnrequestedProfileNamesFor property in your values-override.yaml. For example, to keep unused profiles for 5 days, use the following:

 
readyNowOrchestrator.cleaner.keepUnrequestedProfileNamesFor=P5D

ReadyNow Orchestrator triggers cleanup when you have used around 60% of the available space in your storage. If you are using a persistent volume to back up your storage, ReadyNow Orchestrator calculates the threshold for triggering clean up automatically. If you are using S3 or Azure Blob Storage, there is no reliable way for ReadyNow Orchestrator to calculate the size of the blob storage. You must therefore specify the size using the readyNowOrchestrator.cleaner.externalPersistentStorageSoftLimit property, which by default, is 10Gb.

Note that depending on your usage, ReadyNow Orchestrator’s clean-up mechanism may not be able to keep the actual size of your stored profiles below the size of your storage. When you reach 90% usage, a warning is printed in the log of the gateway service.

If your storage fills up completely, JVMs attempting to write to ReadyNow Orchestrator receive an error.

Configuring Cross-Region Synchronization of Profiles

When you deploy a separate instance of Optimizer Hub in each region, you can configure Optimizer Hub to synchronize profile names between Optimizer Hub instances so that each instance contains at least one promoted profile for each profile name. For example, when deploying a new version of your program, you may first do a canary run in one of your regions. This canary run populates the first generation of the profile for the new version’s profile name. Upon success, you want to launch a full fleet update in your other regions without doing a canary run in each region. By enabling cross-region synchronization, the profile that you wrote in the first region is available when you launch your fleet restarts in other regions.

To enable cross-region synchronization of profiles:

  1. Enable the Management Gateway component by setting the following values in values-override.yaml:

    • Set mgmtGateway.enabled to true

    • If necessary, assign a different port than the default 8080 using mgmtGateway.service.httpEndpoint.port

  2. Define the Optimizer Hub instances that you want to synchronize by entering a comma-separated list of URLs in synchronization.peers.

  3. If necessary, adjust the number of profile generations that Optimizer Hub synchronizes. By default, Optimizer Hub synchronizes the first two generations of the profile.

See Optimizer Hub Generic Defaults > Cross-Region Sync for more information about the configuration options.

ReadyNow Orchestrator Defaults

Optimizer Hub admins can set the following global defaults for ReadyNow profiles in values-override.yaml:

Option Description Default

readyNowOrchestrator.debugInfoHistoryLength

Limit of rolling profile history entries

100

readyNowOrchestrator.cache.enabled

Enabling of caching the chunk content on the gateway

true

readyNowOrchestrator.cache.maxSizeBytes

The fixed size of chunk content cache on the gateway

500000000

readyNowOrchestrator.completedAfter

Time required after the last profile update, after which the profile is considered completed and updates are no longer possible, duration specified in format PnDTnHnMn.nS.

PT24H

readyNowOrchestrator.producers.continueRecordingOnPromotion

Flag to define if profiles must still be recorded after the maxGeneration has been reached. This can be used for debugging purposes.

false

readyNowOrchestrator.producers.maxConcurrentRecordings

The number of concurrent copies of a specific generation ReadyNow Orchestrator accepts before it tells other JVMs trying to write the same generation of the same profile name to stop

10

readyNowOrchestrator.producers.maxPromotableGeneration

Maximum number of generations ReadyNow Orchestrator accepts for a profile name. Note that here is no 'unlimited' value available

3

readyNowOrchestrator.producers.maxProfileSize

Limit on the input profile size, in bytes. No limit by default

0

readyNowOrchestrator.cleaner.enabled

Enabling of automatic repository clean-up

true

readyNowOrchestrator.cleaner.externalPersistentStorageSoftLimit

When your storage is backed by azure-blob or s3 storage, this determines the threshold for the blob data usage, at which ReadyNow Orchestrator initiates its cleanup process.

When your storage is backed by a persistent storage volume, this threshold is calculated automatically.

10Gi

readyNowOrchestrator.cleaner.keepUnrequestedProfileNamesFor

Time limit after which the profile name gets removed if it was not requested within the given duration specified in format PnDTnHnMn.nS.

By default, no limit is defined.

0

readyNowOrchestrator.promotion.minProfileSize

Minimal size (bytes) threshold for all generations unless per-generation flags are specified. Per-generation flags take precedence over the global setting, but the global might be used as a generation 0 setting in case it is not specified in the corresponding per-generation setting.

1000000

readyNowOrchestrator.promotion.minProfileSizePerGeneration

Minimal size thresholds for each generation. In case a generation is missing in the list, it inherits a value from the previously specified generation or the global setting, if there is no previous generation specified.

List of pair <generation>:<size>, separated by \,.

For more information, check Understanding ReadyNow Orchestrator Generations.

0:1000000\,1:10000000\,2:25000000\,3:50000000

readyNowOrchestrator.promotion.minProfileDuration

PT2M

readyNowOrchestrator.promotion.minProfileDurationPerGeneration

See minProfileSizePerGeneration.

List of pair <generation>:<duration>, separated by \,. The duration must be specified in the format PnDTnHnMn.nS.

For more information, check Understanding ReadyNow Orchestrator Generations.

0:PT2M\,1:PT15M\,2:PT30M\,3:PT60M

readyNowOrchestrator.producers.maxSynchronizedGeneration

Defines the maximum number of profile generations to be synced from peers. Profiles with a higher generation are not synced from peers.

2