kafka集群基于延时指标进行性能调优实践-kafka 商业环境实战

版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。期待加入IOT时代最具战斗力的团队。QQ邮箱地址:[email protected],如有任何学术交流,可随时联系。 https://blog.csdn.net/shenshouniu/article/details/84797677

本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。期待加入IOT时代最具战斗力的团队。QQ邮箱地址:[email protected],如有任何学术交流,可随时联系。

1 缓解延时症状

  • 不要创建具备超多分区数的topic,因为适当增加分区数的确可以提升TPS,但是大量的分区的存在对于延时确实损害,分区数越多,broker端就需要越长的时间实现follower与leader的同步。
  • 适当增加Broker数来分散分区数,从而限制了单台Broker上的总分区数,减轻了单台Broker端分区访问压力。
  • 增加num.replica.fetchers参数提升broker端的I/O并行度。该值增加了broker端follower副本从leader副本处获取的最大线程数。默认值是1。
  • 和调节吞吐量相反,调优延时要求producer端尽量不要缓存消息,而是尽快地把消息发送出去。

2 实际可行性调优

  • producer端尽量不要缓存消息,而是尽快的将消息发送出去,又重复了一遍。
  • 设置linger.ms参数设置为0,不要让producer花费额外的时间去缓存待发送的消息。
  • 压缩是一种时间换空间的一种优化方式,为了减少网络I/O传输量,推荐关闭。compression.type=none。
  • Producer端的acks参数也是优化延时的重要手段之一,leader.broker越快的发送response,producer端就能越快地发送下一批消息。该参数默认值是1,实际上已经是非常好的设置了。
  • 调整leader副本返回的最小数据量来间接的影响Consumer端的延时,即fetch.min.bytes参数值。默认值是1,已经是非常好的选择。
  • 本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。期待加入IOT时代最具战斗力的团队。QQ邮箱地址:[email protected],如有任何学术交流,可随时联系。

3 参数清单

broker端

  • 适当增加num.replica.fetchers(broker端follower副本从leader副本处获取的最大线程数)
  • 避免创建过多的topic分区。

producer端

  • 设置linger.ms=0
  • 设置compression.type=none
  • 设置acks=1或者0。

consumer端

  • 设置fetch.min.bytes=1

总结

记住,调优延时要求producer端尽量不要缓存消息,而是尽快地把消息发送出去。又重复了一遍。


秦凯新 于深圳 201812041905

猜你喜欢

转载自blog.csdn.net/shenshouniu/article/details/84797677