在 Debian 上运行 Kafka 时,“调参数”一般分为系统/OS 参数、JVM 参数、Kafka Broker 参数(server.properties)、Topic / Producer / Consumer 参数几个层面。下面按实战角度给你一份常用调优清单。
Kafka 对 fd 消耗很大:
# 查看
ulimit -n
# 修改(临时)
ulimit -n 100000
# 永久(Debian)
vim /etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000
⚠️ 如果用 systemd 启动,还要加:
[Service]
LimitNOFILE=100000
sysctl -w vm.swappiness=1
永久:
echo "vm.swappiness=1" >> /etc/sysctl.conf
sysctl -p
cat /sys/block/sdX/queue/scheduler
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
Debian 通常装在:
/opt/kafka
/etc/kafka
修改:
vim /opt/kafka/bin/kafka-server-start.sh
# 或
vim /etc/default/kafka (如果有的话)
示例(堆内存):
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"
建议:
路径一般是:
/etc/kafka/server.properties
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
num.network.threads=8
num.io.threads=16
default.replication.factor=3
min.insync.replicas=2
num.partitions=6
log.retention.hours=168
log.segment.bytes=1073741824
log.flush.interval.messages=10000
log.flush.interval.ms=1000
⚠️ 一般不要频繁 flush,让 OS page cache 处理
acks=all
enable.idempotence=true
unclean.leader.election.enable=false
kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic test \
--partitions 12 \
--replication-factor 3 \
--config retention.ms=604800000
常用:
retention.mssegment.bytesmin.insync.replicasacks=all
linger.ms=20
batch.size=16384
compression.type=snappy
fetch.min.bytes=1024
max.poll.records=500
LimitNOFILEmount -o remount,noatime /data
under-replicated partitionskafka-broker-api-versions.sh --bootstrap-server localhost:9092
kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
如果你愿意,可以告诉我:
我可以直接给你一套可直接用的 server.properties + systemd 配置。