聊聊kafka client性能调优及kafka最佳实践

这篇具有很好参考价值的文章主要介绍了聊聊kafka client性能调优及kafka最佳实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

背景

最近在使用kafka的时候遇到了一些性能问题。

所以就打算研究下kafka相关的性能优化方案。

client主要分两个

  • producer
  • consumer

producer

producer主要是有两个核心参数

  • batch.size
  • linger.ms

batch.size

先说说这个参数吧
batch.sizeproducer的参数。

当多条消息发送到相同分区时,producer就会将消息打包到一起,然后一次性批量发送到kafka。减少网络请求

默认到小是1638416kb

聊聊kafka client性能调优及kafka最佳实践,消息中间件,# Kafka,kafka,分布式

默认值其实是偏小的,所以我们最好设置为更大。

batch.size 设置的越大,吞吐就越大,但是延迟也会越大

linger.ms

我们设想一下,如果要发送的消息一直达不到我们的batch.size怎么办呢?

难道消息一直不发送吗?

这里就推出第二个参数linger.ms。表示batch的超时时间。

如果linger.ms时间内batch.size还没达到的话,消息也会直接发送。

该值越大,吞吐越大、但延迟也会越大

consumer

consumer这边的核心参数就是fetch.min.bytes,默认值是1kb

聊聊kafka client性能调优及kafka最佳实践,消息中间件,# Kafka,kafka,分布式

Kafka Broker端积只要积攒了1kb 的数据,就可以返回给 Consumer

然后就是一个fetch.max.wait.msproducerlinger.ms类似。指定broker最大等待时间,默认500ms

聊聊kafka client性能调优及kafka最佳实践,消息中间件,# Kafka,kafka,分布式

kafka最佳实践

实际早在国外Hortonworks就总结了一些kafka的最佳实践,虽然文章时间久远,但是依旧很有参考价值

  • 【译】Kafka最佳实践 / Kafka Best Practices:https://www.cnblogs.com/huxi2b/p/6720292.html
  • 原文:https://www.infoq.com/articles/apache-kafka-best-practices-to-optimize-your-deployment/
  • ppt:https://www.slideshare.net/HadoopSummit/apache-kafka-best-practices

总结

其实可以看到producerbatch.sizelinger.ms就是借鉴了tcp/ip的网络发送算法。

tcp/ipNagle算法大致的规则如下

  1. 如果包长度达到MSS,则允许发送
  2. 如果包含FIN,则允许发送
  3. 如果设置了TCP_NODELAY,则允许发送
  4. 未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送
  5. 上述条件都未满足,但发生了超时(一般为200ms),则立即发送。
if there is new data to send then
    if the window size ≥ MSS and available data is ≥ MSS then
        send complete MSS segment now
    else
        if there is unconfirmed data still in the pipe then
            enqueue data in the buffer until an acknowledge is received
        else
            send data immediately
        end if
    end if
end if

总得来说主要是四个参数

producer:

  • batch.size
  • linger.ms

consumer:

  • fetch.min.bytes
  • fetch.max.wait.ms

实际还有很多参数也需要配置,在kafka最佳实践里面都有一些说明,这里就不过多介绍了文章来源地址https://www.toymoban.com/news/detail-772521.html

到了这里,关于聊聊kafka client性能调优及kafka最佳实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM 性能调优及监控诊断工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解

    目录 一. 前言 二. jps(Java Virtual Machine Process Status Tool) 三. jstack 四. jmap(Memory Map)和 jhat(Java Heap Analysis Tool) 五. jstat(JVM统计监测工具) 六. hprof(Heap/CPU Profiling Tool) 七. 总结     工欲善其事,必先利其器。在日常的企业级 Java 应用开发、维护中,我们可能会碰到下面

    2024年02月04日
    浏览(44)
  • 【Kafka系列 04】Kafka 性能调优,怎么做?

    通常来说,调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中,性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求,比如对于数据库用户而言,性能意味着请求的响应时间,用户总是希望查询或更新请求能够被更快地处理完并返回。 对 Kafk

    2024年03月13日
    浏览(55)
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Apache Kafka 官方提供了两个客户端性能测试脚本,它们的存放位置如下: 生产者性能测试脚本:$KAFKA_HOME/bin/kafka-producer-perf-test.sh 消费者性能测试脚本:$KAFKA_HOME/bin/kafka-consumer-perf-test.sh kafka-producer-perf-test.sh 支持测试的性能指标包括:吞吐量(throughput)、最大时延(max-latenc

    2024年02月04日
    浏览(61)
  • Sparkthrift Server 启动命令调优及问题报错解决

    因为是测试命令,所以你需要和正式服务进行区别,不改变节点的情况下需要改变服务名称和服务端口。 命令解析: –name spark_sql_thriftserver2 指定服务名称为 spark_sql_thriftserver2 效果如图: –master yarn --deploy-mode client 指定 spark Job 提交的运行模式为 yarn-client。 提交至 yarn 的运

    2024年02月07日
    浏览(49)
  • Kafka生产者性能调优技巧

    Kafka是一个分布式流平台,是由LinkedIn开发的一个开源项目。Kafka采用发布-订阅模式,消息的发送者称为“生产者”,消息的接收者称为“消费者”。Kafka以高吞吐量、可靠性和存储容量等优点,成为了大规模实时数据处理的首选。 在Kafka中生产者将消息发布到一个Topic(主题

    2024年02月15日
    浏览(36)
  • 43 最佳实践-性能最佳实践-IOThread配置

    43.1 概述 KVM平台上,对虚拟磁盘的读写在后端默认由QEMU主线程负责处理。这样会造成如下问题: 虚拟机的I/O请求都由一个QEMU主线程进行处理,因此单线程的CPU利用率成为虚拟机I/O性能的瓶颈。 虚拟机I/O在QEMU主线程处理时会持有QEMU全局锁(qemu_global_mutex),一旦I/O处理耗时较长

    2024年02月08日
    浏览(50)
  • G1垃圾回收参数调优及MySQL虚引用造成GC时间过长分析

    我方有一应用,偶尔会出现GC时间过长(间隔约4小时),导致性能波动的问题(接口最长需要耗时3秒以上)。经排查为G1垃圾回收器参数配置不当 叠加 MySQL 链接超过闲置时间回收,产生大量的虚引用,导致G1在执行老年代混合GC,标记阶段耗时过长导致。以下为对此问题的分析

    2024年02月11日
    浏览(50)
  • Kafka最佳实践-Kafka常见的使用误区

    1.kafka集群单个节点磁盘挂载的越多越好 业界Kafka的标准使用方式是作为临时缓存使用。因此,很多人会误以为,kafka的每个节点只要存储够大就行,不用关心其他的指标。官方并不建议kafka单节点关在多个磁盘,因为磁盘越多,表示需要更多的处理线程去管理(num.io.thread决定

    2024年02月04日
    浏览(35)
  • 得物社区亿级ES数据搜索性能调优实践

    2020年以来内容标注结果搜索就是社区中后台业务的核心高频使用场景之一,为了支撑复杂的后台搜索,我们将社区内容的关键信息额外存了一份到Elasticsearch中作为二级索引使用。随着标注业务的细分、迭代和时间的推移,这个索引的文档数和搜索的RT开始逐步上升。 下面是

    2024年02月05日
    浏览(49)
  • 【译】MongoDB 性能最佳实践指南

    原文地址:Best Practices Guide for MongoDB Performance MongoDB 是面向开发高性能应用程序的现代开发人员的主要 NoSQL 文档数据库。MongoDB 采用类似 JSON 的文档,以水平扩展和负载平衡著称,为开发人员提供了定制化和可扩展性之间的绝佳平衡。 但是,与其他高性能工具一样,MongoDB 在

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包