这篇文章主要说一下在生产过程中的kafka常用的调优参数,
首先kafka的版本是0.9.0.1,针对以下几个方面来说,
针对kafka的堆内存:
针对kafka的集群调优:
kafka的的消息机制有三种,同步 异步和 oneway
同步(sync)的意味着消息是以batch的方式push,这样会极大的提高broker的性能,但这样也会增加数据丢失的风险
异步(async)的参数比较多,主要有四个参数
其中第二个消息确认机制参数有三种,当它的值为1时,kafka的leader 的partition会接受到数据,但如果leader挂了,数据会丢失.如果设置为0,那么producer不会等到broker的响应,也就是说producer不管消息发出去的死活,这样可以得到最大的吞吐量,但是数据丢失风险极高.如果设置为-1,那么producer会等到所有的partition收到消息时候等到broker的一个确认.这样可以保证最高可靠性,但同时时效性也就降低了.
第三个参数表示缓存消息的时间,例如5秒在将数据发出去,吞吐量增大了,同时时效性也就降低了
第四个参数表示缓存的最大消息数量
第五个参数当设置为-1时,消息会阻塞,不会丢掉,当设置为0时,buffer队列满了会直接丢掉.
第六个参数表示一批数据量的大小,当达到这个数值时候,producer才会发送数据.
对于ONEWAY来说,消息可靠性最低,但是低延迟,高吞吐,对于某些不需要高可靠性的场景比较适用.
此外 在server.properties中可增加两个参数
replica.socket.timeout.ms = 300000 #当集群之间网络不稳定时,调大该参数
replica.lag.time.max.ms= 600000# 如果网络不好,或者kafka集群压力较大,会出现副本丢失,然后会频繁复制副本,导致集群压力更大,此时可以调大该参数
在consumer.properties中可增加两个参数
zookeeper.connection.timeout.ms = 60000
zookeeper.sync.time.ms = 5000
上面两个参数时间间隔可调大一点,避免网络问题引起的节点误判下线
最后合理设置副本数,如果broker的数量为5,那么副本设置3个足够,避免过多的冗余.
以上就是常用的kafka参数调优,如有其它,欢迎大家补充.