Fine-tuning bulk operation processing

Learn how to configure Edge Flow Manager (EFM) bulk operation updates.

You can find the related configuration in the efm.properties file located in the conf directory of the EFM installation. EFM sends updates to agents through operations, which can be categorized into the following types:
  • Agent level: Operations for individual agents, for example: debug requests
  • Agent class level: Operations for all agents within an agent class, for example: flow updates, asset downloads, or property updates

This documentation describes various configuration scenarios to optimize agent class level updates.

To prevent heavy network loads and avoid Distributed Denial-of-Service (DDoS)-like behavior from agents, EFM sends updates to agents in smaller batches.

Below are the parameters related to operation updates:
# The maximum number of operations queued to be sent at once
efm.operation.monitoring.rollingBatchOperationsSize=100

# The number of operations to queue for different update types
efm.operation.monitoring.rollingOperationsSize.update.asset=10
efm.operation.monitoring.rollingOperationsSize.update.configuration=100
efm.operation.monitoring.rollingOperationsSize.update.properties=100
efm.operation.monitoring.rollingOperationsSize.sync.resource=100

# The interval for refreshing the operation queue
efm.operation.monitoring.rollingBatchOperationsFrequency=10s

# The multiplier for agent heartbeat interval properties to calculate timeout for queued operation
efm.operation.monitoring.inQueuedStateTimeoutHeartbeatRate=1.0

# The timeout for deployed, but not done operations
efm.operation.monitoring.inDeployedStateTimeout=5m

# The interval for checking operation timeouts
efm.operation.monitoring.inDeployedStateCheckFrequency=1m

# Enable/disable operation timeouts
efm.operation.monitoring.enabled=true

# The agent heartbeat interval monitor properties default value
efm.monitor.maxHeartbeatInterval=5m

# Class-specific values
efm.monitor.maxHeartbeatIntervalForClass.[Class\ A]=1m
efm.monitor.maxHeartbeatIntervalForClass.[Class\ B]=2m
efm.monitor.maxHeartbeatIntervalForClass.[Class\ C]=0m

Check out the different scenarios to see how changing these parameters can impact a deployment with 10,000 agents.