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 |
---|---|---|---|
confluent.intelligent.replication.push.max.threads |
INT | 4 |
Determines the maximum number of threads to be used for push replication. |
confluent.intelligent.replication.push.threads.per.remote.broker |
INT | 1 |
Determines the number of threads replicating to a single peer broker. Can
be between 1 and the setting for confluent.intelligent.replication.push.max.threads . |
confluent.intelligent.replication.push.max.memory.buffer.bytes |
LONG | 209715200 (200 MB) |
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.threads
setting controls the total thread pool size for push replication across all remote brokers. - Threads Per Broker: The
confluent.intelligent.replication.push.threads.per.remote.broker
setting determines how many threads are dedicated to each remote broker. - Relationship: The threads per broker setting cannot exceed the max threads setting.
- Max Threads: The
- Memory Configuration
- Buffer Size: The
confluent.intelligent.replication.push.max.memory.buffer.bytes
setting controls memory allocation for push replication buffering. - Monitoring: Use the
PushManagerMemoryBytesUsed
metric to monitor actual memory usage against this limit.
- Buffer Size: The
Follow tuning recommendations¶
- For High-Throughput Workloads
- Increase
confluent.intelligent.replication.push.max.threads
to handle more concurrent replication operations (consider 6-8 threads for very high throughput). - Consider increasing
confluent.intelligent.replication.push.max.memory.buffer.bytes
if memory pressure is observed (up to 400-500MB for high throughput scenarios). - Monitor
PushManagerMemoryBytesUsed
to ensure you’re not approaching the buffer limit
- Increase
- For High-Partition Count Clusters
- Balance
confluent.intelligent.replication.push.threads.per.remote.broker
based on the number of remote brokers in your cluster. - With many brokers, keep threads per broker low (1-2) but increase max threads.
- Monitor
PushEventQueueProcessingTimeMs
to ensure processing keeps up with demand. - Watch
FollowersAwaitingPushTransition
to identify if partitions are struggling to transition to push mode.
- Balance
- 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.bytes
to 100MB or less. - Monitor
PushManagerMemoryBytesUsed
to 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.server
section 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.