在server.properties配置文件参数说明:ios
配置优化是修改的配置文件中的参数值:vim
1.网络和ios操做线程配置优化:bash
# broker处理消息的最大线程数 num.network.threads=xxx # broker处理磁盘IO的线程数 num.io.threads=xxx
建议配置:网络
通常num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1.并发
num.io.threads主要进行磁盘io操做,高峰期可能有些io等待,所以配置须要大些。配置线程数量为cpu核数2倍,最大不超过3倍性能
2.log数据文件刷盘策略fetch
为了大幅度提升producer写入吞吐量,须要按期批量写文件。优化
建议配置:.net
# 每当producer写入10000条消息时,刷数据到磁盘 log.flush.interval.messages=10000 # 每间隔1秒钟时间,刷数据到磁盘 log.flush.interval.ms=1000
3.日志保留策略配置线程
当kafka server的被写入海量消息后,会生成不少数据文件,且占用大量磁盘空间,若是不及时清理,可能磁盘空间不够用,kafka默认是保留7天
建议配置:
# 保留三天,也能够更短 log.retention.hours=72 # 段文件配置1GB,有利于快速回收磁盘空间,重启kafka加载也会加快(若是文件太小,则文件数量比较多, # kafka启动时是单线程扫描目录(log.dir)下全部数据文件) log.segment.bytes=1073741824
4.replica复制配置
每一个follow从leader拉取消息进行同步数据,follow同步性能由这几个参数决定,分别为拉取线程数(num.replica.fetchers)、最小字节数(replica.fetch.min.bytes)、最大字节数(replica.fetch.max.bytes)、最大等待时间(replica.fetch.wait.max.ms)
建议配置:
num.replica.fetchers=1 配置多能够提升follower的I/O并发度,单位时间内leader持有更多请求,相应负载会增大,须要根据机器硬件资源作权衡 replica.fetch.min.bytes=1 默认配置为1字节,不然读取消息不及时 replica.fetch.max.bytes= 5 * 1024 * 1024 默认为1MB,这个值过小,5MB为宜,根据业务状况调整 replica.fetch.wait.max.ms follow拉取频率,频率太高,会致使cpu飙升,由于leader无数据同步,leader会积压大量无效请求状况,又由于0.8.2.x版本存在bug,定时器超时检查比较消耗CPU,使用者须要作好权衡
5.配置jmx服务
kafkaserver中默认不启动jmx端口须要用户本身配置
vim bin/kafka-run-class.sh #最前面添加一行 JMX_PORT=8060