配置文件在config/server.properties
下面的一些配置可能是你需要进行修改的。
这里为官方提供配置文件解释:https://kafka.apache.org/08/configuration.html
字段名 | 注释 | 备注 | 推荐配置(如留空,则选用默认配置则可) |
broker.id |
整数,建议根据ip区分 |
推荐利用ip如:192.168.1.1; 则利用ip末位作为id; 方便对应ip寻找broker |
|
log.dirs |
kafka存放消息文件的路径, |
默认/tmp/kafka-logs | |
port |
broker用于接收producer消息的端口 |
默认9092 | |
zookeeper.connnect |
zookeeper连接 |
格式为 ip1:port,ip2:port,ip3:port | |
message.max.bytes |
单条消息的最大长度 |
||
num.recovery.threads.per.data.dir | 每个数据目录用来日志恢复的线程数目 | ||
socket.send.buffer.bytes | 通信发送缓存空间大小 | 默认102400 | |
socket.receive.buffer.bytes | 通信接收缓存空间大小 | 默认102400 | |
socket.request.max.bytes | 通信请求最大接收限制,The maximum request size the server will allow. This prevents the server from running out of memory and should be smaller than the Java heap size. | 存在OOM(内存溢出)风险 | 推荐小于zookeeper 的heapsize |
num.network.threads |
broker用于处理网络请求的线程数 |
如不配置默认为3,server.properties默认是2 | |
num.io.threads |
broker用于执行网络请求的IO线程数 |
如不配置默认为8,server.properties默认是2可适当增大 | 16 |
queued.max.requests |
排队等候IO线程执行的requests |
默认为500 | 1024 |
host.name |
broker的hostname |
默认null,建议写主机的ip,不然消费端不配置hosts会有麻烦 | |
num.partitions |
topic的默认分区数 |
默认1 | 16 |
log.retention.hours |
消息被删除前保存多少小时 |
默认1周168小时 | |
log.flush.interval.messages |
log文件“sync”到磁盘之前累积的消息条数。 因为磁盘IO操作是一个慢操作,但又是一个“数据可靠性”的必要手段,所以检查是否需要固化到硬盘的时间间隔。 需要在“数据可靠性”与“性能”之间做必要的权衡, 如果此值过大,将会导致每次“发sync”的时间过长(IO阻塞), 如果此值过小,将会导致“fsync”的时间较长(IO阻塞), 如果此值过小,将会导致”发sync“的次数较多,这也就意味着整体的client请求有一定的延迟,物理server故障,将会导致没有fsync的消息丢失。 |
||
log.flush.scheduler.interval.ms | 检查是否需要fsync的时间间隔 | ||
log.segment.bytes | kafka中log日志是分成一块块存储的,此配置是指log日志划分成块的大小 | ||
log.retention.check.interval.ms | 检查日志分段文件的间隔时间,以确定是否文件属性是否到达删除要求。 | ||
default.replication.factor |
消息备份数目 |
默认1不做复制 | 3 |
num.replica.fetchers |
用于复制leader消息到follower的IO线程数 |
默认1 |
启动配置文件
对应目录bin/kafka-server-start.sh 脚本
修改 KAFKA_HEAP_OPTS 处 -Xmx 和 -Xms 的值
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx2.5G -Xms2.5G" fi