温馨提示×

ubuntu kafka配置如何限流量

小樊
47
2026-10-17 06:11:25
栏目: 智能运维

在 Ubuntu 上部署的 Kafka(通常是 Kafka Broker 或客户端)进行流量限速,可以从 Broker 端限流、Topic/Client 级别限流、网卡层限流 三个维度来做。下面按常见场景说明。


一、Kafka Broker 端限流(最常用)

1. 限制 Producer / Consumer 吞吐(按 client.id)

# server.properties
quota.producer.default=1048576      # 1 MB/s
quota.consumer.default=1048576      # 1 MB/s

或针对具体 client:

bin/kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'producer_byte_rate=1048576,consumer_byte_rate=1048576' \
  --entity-type clients --entity-name your-client-id

✅ 单位:bytes/sec
✅ 只限制 Kafka 协议流量


2. 限制 Topic 级别流量

bin/kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'leader.replication.throttled.rate=1048576' \
  --entity-type topics --entity-name your-topic

或生产/消费限速:

--add-config 'producer_byte_rate=1048576,consumer_byte_rate=1048576'

3. 副本同步限流(防止同步打满带宽)

# server.properties
leader.replication.throttled.rate=1048576
follower.replication.throttled.rate=1048576

二、Kafka 命令行工具限流(临时测试)

1. 限制 kafka-producer-perf-test

bin/kafka-producer-perf-test.sh \
  --topic test \
  --num-records 100000 \
  --record-size 1024 \
  --throughput 1000 \
  --producer-props bootstrap.servers=localhost:9092

--throughput 1000 = 1000 records/sec


三、操作系统 / 网卡层限流(Ubuntu)

1. 使用 tc 限制网卡带宽(推荐)

限制 9092 端口出口 10Mbps:

sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

解除:

sudo tc qdisc del dev eth0 root

2. 使用 iptables + hashlimit(按 IP 限流)

sudo iptables -A INPUT -p tcp --dport 9092 \
  -m hashlimit --hashlimit-above 1mb/s --hashlimit-mode srcip \
  -j DROP

四、容器 / Docker 场景

docker run -d \
  --name kafka \
  --network=host \
  --blkio-weight 500 \
  kafka

或使用:

  • --cpu-quota
  • --memory

五、推荐方案总结

场景 推荐方式
防止消费者打满带宽 client quota
控制副本同步 replication throttle
整体机器限速 tc
压测限流 perf-test --throughput
多租户隔离 client / user quota

如果你能说明:

  • Kafka 版本
  • 单机还是集群
  • 想限 生产 / 消费 / 副本 / 网卡
  • 是否是 Docker / 云环境

我可以给你一套可直接执行的配置示例。

0 踩