Kafka中产生数据积压的原因以及解决方案

1、kafka中数据积压的原因

kafka作为消息队列,其中数据积压也是经常遇到的问题之一。我们都知道,数据积压的直接原因,一定是系统中的某个部分出现了性能问题,来不及处理上游发送的数据,才会导致数据积压。那么我们就需要分析在使用kafka时,如何通过优化代码以及参数配置来最大程度的避免数据积压来对业务中的影响。

2、kafka中数据积压的解决方案

 首先我们在上面分析得出,是由于上游生产者producer发送数据过快,以及下游消费者consumer拉取数据过慢,实质上就是,生产者生产数据速度>>消费者消费数据速度。那么就可以把问题定位到生产者producer以及消费者consumer这两方面上。1、生产者producer:吞吐量可以通过修改以下参数配置提提升生产者的吞吐量:1)batch.memory修改缓冲区大小设置发送消息的缓冲区,默认值是33554432,就是32MB如果发送消息出去的速度小于写入消息进去的速度,就会导致缓冲区写满,此时生产消息就会阻塞住,所以说这里就应该多做一些压测,尽可能保证说这块缓冲区不会被写满导致生产行为被阻塞住。2)compression.type压缩格式默认是none,不压缩,但是也可以使用lz4压缩,效率还是不错的,压缩之后可以减小数据量,提升吞吐量,但是会加大producer端的cpu开销。3)batch.size批次大小设置merge batch合并批次消息的大小如果 batch 批次太小,会导致频繁网络请求,吞吐量下降;如果batch批次太大,会导致一条消息需要等待很久才能被发送出去,而且会让内存缓冲区有很大压力,过多数据缓冲在内存里。默认值是:16384,就是16kb,也就是一个batch批次满了16kb就发送出去,一般在实际生产环境,这个batch批次的值可以增大一些来提升吞吐量,可以自己压测一下。4)linger.ms等待时长这个值默认是0,意思就是消息必须立即被发送,但是这是不对的。一般设置一个100毫秒之类的,这样的话就是说,这个消息被发送出去后进入一个batch批次,如果100毫秒内,这个batch批次满了16kb,自然就会发送出去。但是如果100毫秒内,batch没满,那么也必须把消息发送出去了,不能让消息的发送延迟时间太长,也避免给内存造成过大的一个压力。2、消费者consum   :扩容,扩分区;增加consumer1)提升消费者组中的消费者数以及Topic中的分区数,让二者相等,假设设置为3个分区 = 3CPU。2)提高消费者拉取数据的能力,比如Flume每次拉取的数据可以由1000条改为3000条、Spark中将限流的参数增大、Flink中保证数据的处理效率等。

3、数据积压分析V2.0

 日常系统正常运转的时候,没有积压或者只有少量积压很快就消费掉了,但是某一个时刻,突然就开始积压消息并且积压持续上涨。这种情况下需要你在短时间内找到消息积压的原因,迅速解决问题才不至于影响业务。导致突然积压的原因肯定是多种多样的,不同的系统、不同的情况有不同的原因,不能一概而论。但是,我们排查消息积压原因,是有一些相对固定而且比较有效的方法的。能导致积压突然增加,最粗粒度的原因,只有两种:1、要么是发送变快了,2、要么是消费变慢了。大部分消息队列都内置了监控的功能,只要通过监控数据,很容易确定是哪种原因。如果是单位时间发送的消息增多,比如说是赶上大促或者抢购,短时间内不太可能优化消费端的代码来提升消费性能,唯一的方法是通过扩容消费端的实例数来提升总体的消费能力。如果短时间内没有足够的服务器资源进行扩容,没办法的办法是,将系统降级,通过关闭一些不重要的业务,减少发送方发送的数据量,最低限度让系统还能正常运转,服务一些重要业务。还有一种不太常见的情况,你通过监控发现,无论是发送消息的速度还是消费消息的速度和原来都没什么变化,这时候你需要检查一下你的消费端,是不是消费失败导致的一条消息反复消费这种情况比较多,这种情况也会拖慢整个系统的消费速度。如果监控到消费变慢了,你需要检查你的消费实例,分析一下是什么原因导致消费变慢。优先检查一下日志是否有大量的消费错误,如果没有错误的话,可以通过打印堆栈信息,看一下你的消费线程是不是卡在什么地方不动了,比如触发了死锁或者卡在等待某些资源上了。

Kafka中产生数据积压的原因以及解决方案相关推荐

  1. Spark Streaming从Kafka中获取数据,并进行实时单词统计,统计URL出现的次数

    1.创建Maven项目 创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/74571374 2.启动Kafka A:安装kafka集 ...

  2. 使用idea编写SparkStreaming消费kafka中的数据,并对数据进行某一指标的处理【小案例】(五)

    接    使用idea编写SparkStreaming消费kafka中的数据[小案例](四) https://georgedage.blog.csdn.net/article/details/1035 ...

  3. linux 中kafka发送数据,C++ 向kafka中发送数据

    kafka是一个分布式流处理的平台,通过kafka我们可以发布和订阅流式记录.有关kafka的介绍可以参考官网或者这篇文章https://juejin.im/post/6844903495670169 ...

  4. 查看使用linkedIn Camus 把Kafka中的数据导入HDFS中生成的.deflate文件

    在使用Camus好不容易把kafka中的数据导入了HDFS,但是直接download后打开,显示的会是乱码.经查询,带.deflate后缀的文件是使用DEFLATE算法压缩过的,所以要查看,只需使用h ...

  5. Flink 获取 Kafka 中的数据,分流存储到 Redis、MySQL 中

    文章目录 案例:实时处理电商订单信息 需求一:统计商城实时订单实收金额 需求二:将上面的最后计算的结果,存储到 Redis 中(Key 为:totalprice) Redis Sink 自定义 Red ...

  6. mysql中幻读出现的原因及解决方案

    今天分享 mysql中幻读出现的原因及解决方案: 一.首先明确什么是幻读:​  事务A按照一定条件进行数据读取,期间事务B插入了相同搜索条件的新数据,事务A再次按照原先条件进行读取操作修改时,发现了事 ...

  7. 数据倾斜的原因和解决方案

    数据倾斜的原因和解决方案 参考文章: (1)数据倾斜的原因和解决方案 (2)https://www.cnblogs.com/pengpenghuhu/p/12000199.html 备忘一下.

  8. kafka中副本数据同步策略 ,acknowledge的发送策略,kafka的数据可靠性保证

    ack(acknowledge)简介 为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的消息后,都需要向producer发送 ...

  9. 使用Spark Streaming从kafka中读取数据把数据写入到mysql 实例

    文章目录 一. 题目 题目和数据 二. pom依赖 三.建表语句 四. 连接kafka配置类 五. 自定义分区类 六. 读取数据并发送数据 七. 消费数据,把数据存储到mysql 一. 题目 题目和数 ...

最新文章

  1. “互联网+”的时代,易佳互联也随着时代步伐前进着
  2. [转]面向GPU的多LOD因子的大规模场景可视化策略
  3. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...
  4. 单元测试以及dagger的使用
  5. 剖析Linux系统启动过程(二)
  6. Linux命令行模式下的复制和粘贴以及停止命令刷新
  7. VIM使用系列:寄存器与复制粘贴缓冲区
  8. 【maven】Controller层参数如何设置传null
  9. Oracle 抢人了!近 4000 万年薪只为一个 AI 专家
  10. LDA话题模型与推荐系统
  11. 如何给Arduino项目添加音乐播放功能
  12. 牛客网华为机试题java,华为机试题
  13. winform 监控 控制台 输出_海南指挥中心控制台公司-精诚创信
  14. ORA12514问题
  15. php 上传微信客服头像,微信多客服上传头像
  16. UVA12304-2D Geometry 110 in 1!
  17. 2012_WOW_Designing Steganographic Distortion Using Directional Filters
  18. 如何提升程序员的代码编写能力
  19. SqlServer数据库 时间类型字段添加默认值 设置时间格式
  20. ORacle空间数据

热门文章

  1. TinyXml使用详解
  2. 51Nod 1366 贫富差距
  3. hive相关知识与操作
  4. Dubbo学习记录(八) -- Spring整合Dubbo中@Reference注解解析原理
  5. 多项式加法运算(链表实现)
  6. 仿QQ拖动删除未读消息个数气泡之二
  7. 自定义View实现通讯录和索引联动,如丝般顺滑
  8. 苦逼的单身狗-啥也不会的小白
  9. LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读
  10. Zigbee电动智能窗帘系统理想解决方案