在 Debian 上调整 Kafka 参数,通常是从 配置文件、系统参数、JVM 参数 三个层面来做。下面按实际使用场景给你一个清晰指南。
如果你是用 APT 安装:
/etc/kafka/server.properties
/etc/kafka/producer.properties
/etc/kafka/consumer.properties
如果是 官网二进制包:
<KAFKA_HOME>/config/server.properties
修改后需重启:
systemctl restart kafka
# 或
<KAFKA_HOME>/bin/kafka-server-stop.sh
<KAFKA_HOME>/bin/kafka-server-start.sh -daemon config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka/logs
num.network.threads=3
num.io.threads=8
default.replication.factor=3
num.partitions=6
min.insync.replicas=2
num.replica.fetchers=4
replica.fetch.max.bytes=10485760
message.max.bytes=10485760
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
acks=all
retries=10
enable.idempotence=true
log.retention.hours=168
log.segment.bytes=1073741824
log.cleanup.policy=delete
Debian APT 安装:
/etc/default/kafka
或二进制包:
<KAFKA_HOME>/bin/kafka-server-start.sh
示例(8G 内存机器):
export KAFKA_HEAP_OPTS="-Xms4g -Xmx4g"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200"
ulimit -n 100000
永久生效:
/etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000
/etc/sysctl.conf
vm.swappiness=1
net.core.somaxconn=4096
net.ipv4.tcp_max_syn_backlog=8192
应用:
sysctl -p
batch.size=16384
linger.ms=5
compression.type=snappy
acks=all
fetch.min.bytes=1024
max.poll.records=500
| 场景 | 建议 |
|---|---|
| 高吞吐 | 增加 partition、io.threads |
| 低延迟 | 减少 linger.ms、acks=1 |
| 高可靠 | acks=all、min.insync.replicas≥2 |
| 大消息 | 增大 message.max.bytes |
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-defaults --describe
如果你愿意,可以告诉我:
我可以直接给你一套 可落地的参数模板。