Configure Intelligent Replication in Confluent Private Cloud
This topic describes the configuration options available for tuning Intelligent Replication performance in Confluent Private Cloud.
Configuration properties
The following configurations are available for tuning Intelligent Replication:
Property |
Type |
Default Value |
Description |
|---|---|---|---|
|
INT |
|
Determines the maximum number of threads to be used for push replication. |
|
INT |
|
Determines the number of threads replicating to a single peer broker. Can
be between 1 and the setting for |
|
LONG |
|
The maximum amount of memory used by push replication for buffering. Currently used solely by the records buffer for intelligent replication. |
Review configuration guidelines
- Thread Configuration
Max Threads: The
confluent.intelligent.replication.push.max.threadssetting controls the total thread pool size for push replication across all remote brokers.Threads Per Broker: The
confluent.intelligent.replication.push.threads.per.remote.brokersetting determines how many threads are dedicated to each remote broker.Relationship: The threads per broker setting cannot exceed the max threads setting.
- Memory Configuration
Buffer Size: The
confluent.intelligent.replication.push.max.memory.buffer.bytessetting controls memory allocation for push replication buffering.Monitoring: Use the
PushManagerMemoryBytesUsedmetric to monitor actual memory usage against this limit.
Follow tuning recommendations
- For High-Throughput Workloads
Increase
confluent.intelligent.replication.push.max.threadsto handle more concurrent replication operations (consider 6-8 threads for very high throughput).Consider increasing
confluent.intelligent.replication.push.max.memory.buffer.bytesif memory pressure is observed (up to 400-500MB for high throughput scenarios).Monitor
PushManagerMemoryBytesUsedto ensure you’re not approaching the buffer limit
- For High-Partition Count Clusters
Balance
confluent.intelligent.replication.push.threads.per.remote.brokerbased on the number of remote brokers in your cluster.With many brokers, keep threads per broker low (1-2) but increase max threads.
Monitor
PushEventQueueProcessingTimeMsto ensure processing keeps up with demand.Watch
FollowersAwaitingPushTransitionto identify if partitions are struggling to transition to push mode.
- For Resource-Constrained Environments
Keep default thread settings (4 max threads, 1 per broker) or reduce if CPU usage is a concern.
Consider reducing
confluent.intelligent.replication.push.max.memory.buffer.bytesto 100MB or less.Monitor
PushManagerMemoryBytesUsedto ensure memory usage stays within acceptable limits.Watch for frequent transitions between push and pull modes, which may indicate resource constraints.
- Threading Considerations
Total threads = min(max.threads, num_brokers * threads.per.remote.broker)
Each thread handles multiple partitions in a round-robin fashion
More threads can improve parallelism but may increase CPU overhead
Review configuration examples
High-Performance Configuration
confluent.intelligent.replication.enable=true
confluent.intelligent.replication.push.max.threads=8
confluent.intelligent.replication.push.threads.per.remote.broker=2
confluent.intelligent.replication.push.max.memory.buffer.bytes=419430400
Conservative Configuration
confluent.intelligent.replication.enable=true
confluent.intelligent.replication.push.max.threads=2
confluent.intelligent.replication.push.threads.per.remote.broker=1
confluent.intelligent.replication.push.max.memory.buffer.bytes=104857600
Apply configuration changes
Add the configuration properties to the
configOverrides.serversection of your Kafka custom resource.Restart your brokers with a cluster roll to apply the changes.
Monitor the relevant JMX metrics to verify the configuration is working as expected.
For more information about monitoring, see Monitor Intelligent Replication in Confluent Private Cloud.