在 Ubuntu 上运行 Kafka 时,“限制带宽”通常有以下几种场景和做法。下面按常见需求给你一个清晰总结。
Kafka 自带参数,用于限制 Follower 从 Leader 拉取数据的带宽,不影响生产/消费。
server.properties# 限制副本同步速度为 10 MB/s(单位是 byte/s)
follower.replication.throttled.rate=10485760
# Leader 向 Follower 发送数据的限速
leader.replication.throttled.rate=10485760
bin/kafka-configs.sh --bootstrap-server localhost:9092 \
--entity-type topics --entity-name your-topic \
--alter --add-config 'leader.replication.throttled.replicas=*'
bin/kafka-configs.sh --bootstrap-server localhost:9092 \
--entity-type topics --entity-name your-topic \
--alter --add-config 'follower.replication.throttled.replicas=*'
✅ 适合:集群扩容、副本重平衡时防止打满网卡
Kafka 服务端不能直接限制生产/消费带宽,需要在客户端做。
props.put("max.request.size", "1048576"); // 1MB
props.put("linger.ms", 100);
props.put("batch.size", 16384);
fetch.max.bytes如果你想硬性限制 Kafka 使用的网络带宽,可以用 tc。
sudo tc qdisc add dev eth0 root handle 1: htb
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 \
u32 match ip dport 9092 0xffff flowid 1:1
✅ 适合:
--network 带宽NetworkPolicy 或 kube-router| 场景 | 推荐方式 |
|---|---|
| 副本同步占带宽 | Kafka 自带 throttled rate |
| 生产/消费限速 | 客户端限流 |
| 整机/端口限速 | Linux tc |
| 云服务器 | 云平台流控 |
如果你能具体说一下:
我可以给你更精确的配置示例。