在 Debian 上测试 Kafka 吞吐(吞吐量),通常使用 Kafka 自带的 生产者/消费者性能测试脚本。下面给你一套从 0 到 1 的实操方法。
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
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
# 启动 Zookeeper(老版本)或 KRaft(新版本)
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &
bin/kafka-topics.sh \
--create \
--topic perf-test \
--bootstrap-server localhost:9092 \
--partitions 6 \
--replication-factor 1
吞吐测试建议:
- partitions ≥ broker 核数
- replication-factor = 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:不限速(测最大吞吐)1000000 records sent, 250000 records/sec (244.14 MB/sec), 1.2 ms avg 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
num.network.threads=8
num.io.threads=16
log.flush.interval.messages=10000
# CPU / 内存
top
# 磁盘 IO
iostat -x 1
# 网络
iftop
acks=all 太慢linger.ms 太大如果你愿意,我可以:
你现在是 单节点还是集群?