温馨提示×

debian kafka怎么测试吞吐

小樊
46
2026-08-31 23:39:05
栏目: 智能运维

在 Debian 上测试 Kafka 吞吐(吞吐量),通常使用 Kafka 自带的 生产者/消费者性能测试脚本。下面给你一套从 0 到 1 的实操方法。


一、环境准备(Debian)

1. 安装 Java(Kafka 依赖)

sudo apt update
sudo apt install -y openjdk-17-jdk
java -version

2. 安装 Kafka

wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
cd kafka_2.13-3.7.0

3. 启动 Kafka(单节点测试)

# 启动 Zookeeper(老版本)或 KRaft(新版本)
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &

二、创建测试 Topic

bin/kafka-topics.sh \
  --create \
  --topic perf-test \
  --bootstrap-server localhost:9092 \
  --partitions 6 \
  --replication-factor 1

吞吐测试建议:

  • partitions ≥ broker 核数
  • replication-factor = 1(压测时)

三、生产者吞吐测试(重点)

1. 基本命令

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

参数说明:

  • --num-records:总消息数
  • --record-size:每条消息大小(字节)
  • --throughput -1:不限速(测最大吞吐)

2. 输出示例

1000000 records sent, 250000 records/sec (244.14 MB/sec), 1.2 ms avg latency

关注指标:

  • records/sec
  • MB/sec
  • avg / max latency

四、消费者吞吐测试

bin/kafka-consumer-perf-test.sh \
  --topic perf-test \
  --bootstrap-server localhost:9092 \
  --messages 1000000 \
  --timeout 60000

输出示例:

MB.sec  data.consumed.in.MB  MB.sec  
240.5   976.56               240.5

五、调优参数(提高吞吐)

生产者

--producer-props \
  bootstrap.servers=localhost:9092 \
  batch.size=65536 \
  linger.ms=5 \
  compression.type=lz4 \
  acks=1

服务端(server.properties)

num.network.threads=8
num.io.threads=16
log.flush.interval.messages=10000

六、磁盘 / 网络监控(Debian)

# CPU / 内存
top

# 磁盘 IO
iostat -x 1

# 网络
iftop

七、常见问题

Q1:吞吐上不去?

  • partition 太少
  • 磁盘是 HDD
  • acks=all 太慢
  • 网络带宽瓶颈

Q2:延迟高?

  • linger.ms 太大
  • GC 频繁
  • broker CPU 饱和

如果你愿意,我可以:

  • 给你 KRaft 模式测试方案
  • 自动化压测脚本
  • 帮你 分析你的 Kafka 配置

你现在是 单节点还是集群

0