# 每个topic默认partition数量,根据消费者实际情况配置,配置过小会影响消费性能
num.partitions=50
#日志传输时候的压缩格式,可选择lz4, snappy, gzip,不压缩。建议打开压缩,可以提高传输性能,压缩格式的选择可以参考文章结尾的参考资料。
compression.type=snappy
# 启用压缩的topic名称。若上面参数选择了一个压缩格式,那么压缩仅对本参数指定的topic有效,若本参数为空,则对所有topic有效。
compressed.topics=topic1
#用来从主partion同步数据的线程数,默认为1,建议适当调大,数据量大的时候一个同步线程可能不够用
num.replica.fetchers=3
#消息日志备份因子,默认是1
default.replication.factor=2
1.网络和io操作线程配置优化
# 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倍.
1.网络和io操作线程配置优化
# 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倍.
4.replica复制配置
每个follow从leader拉取消息进行同步数据,follow同步性能由这几个参数决定,分别为拉取线程数(num.replica.fetchers)、最小字节数(replica.fetch.min.bytes)、最大字节数(replica.fetch.max.bytes)、最大等待时间(replica.fetch.wait.max.ms)
建议配置:
num.replica.fetchers 配置多可以提高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,使用者需要做好权衡