最近的项目用Kafka比较多,之前碰到很多问题都是网上搜索解决的,我将我近期踩坑爬坑的一些情况稍微总结一下,希望对后面的同学有点帮助。有错误的地方欢迎留言。

kafka基础知识可以参考这里

https://www.w3cschool.cn/apache_kafka/apache_kafka_quick_guide.html

本文kafka针对版本kafka_2.12-2.1.0, 不同版本可能现象和配置有差异。

  1. Kafka连接类故障

故障现象:kafka正常启动后,连接不上kafka服务

Kafka服务安装好(很多数据库默认安装之后远程访问是关闭的)之后,一般是监听的

本地的IP端口,需要进server.config修改配置:

advertised.listeners=SASL_PLAINTEXT://192.168.1.227:9092

listeners=SASL_PLAINTEXT://0.0.0.0:9092

重启后观察端口监听状态,如果监听的不是127.0.0.1,则非本机也可以进行连接了。

[root@XX]# netstat -an|grep 9092

tcp        0      0 192.168.1.227:44692     192.168.1.227:9092      ESTABLISHED

tcp6       0      0 :::9092                 :::*                    LISTEN

如果还是无法连接,关注下系统防火墙的端口情况。

  2. 无法消费数据或发送数据异常

2.1 故障现象: 配置多个消费者但只有一个消费者能消费

Kafka默认安装完,同一个group只能有一个消费者,如果需要多个消费者同时负载消费同一类数据,需要先在kafka server中设置分片。

kafka服务未设置分片,修改server.config配置文件

num.partitions=4

2.2 故障- 发送数据大于1MB则报错

org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server will accept.

修改kafka服务器server.config配置文件,新增配置

message.max.bytes=200000000

replica.fetch.max.bytes=200000000

producer生产者配置:

max.request.size:   52428800

3. 数据重复消费或遗漏

如果数据offset提交失败可能会造成数据重复消费。

3.1 故障现象:消费者无法commit offset.

org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records.

这个问题就需要看为什么group被reblacance了。看上文内容是说可能是pool()获取的records后,调用下一次poll的间隔时间太长了,超过了max.poll.interval.ms 。

可以通过将max.pool.interval.ms修改来进行优化,更好的方式是采用多线程的方式来进行处理。接收消息和处理消费在不同的线程中进行处理,这样pool()中只需要将数据提交到一个内存队列中即可。

  while(true){try {ConsumerRecords<String, byte[]> records = consumer.poll(Duration.ofMillis(50));for (ConsumerRecord<String, byte[]> record : records){KafkaExObject kafkaExObject = null;try {kafkaExObject = new KafkaExObject(record.value());//解码后提交到另外的线程处理kafkaProtoProcessManage.addMsg(kafkaExObject);}catch (Exception ex){logger.error("recv  kafka protocol message decode exception:" , ex );}}// 接收完消息if(!kafkaConfig.getEnableAutoCommit()){consumer.commitSync();}/****如果实际业务处理线程忙不过来,即处理消息的速度慢与接收消息的速度,这里控 制一下速度,不要让数据驻留内存太多。 判断是否积压需要根据业务情况来,确保这个poll() 调用的间隔不会过大(超过max.poll.interval.ms)而报错。***/while (kafkaProtoProcessManage.isBlocked()){logger.warn("Kafka process list may be blocked, have a rest.");try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}} catch (Exception e) {e.printStackTrace();logger.error("ProcessProtocolTask ConsumerRecords meet exception:",e);// TODO: handle exception}}

 3.2 故障现象:Kafka consumer经常被rebalanced.

实际的生产环境通常比较复杂。对于多台集群多topic多group的场景,通常有以下几种情况。

Kafka在数据多分片的情况数据下,当有新的consumer上下线的时候,对于同一个group的成员来说,需要进行数据的重新分配。简单理解就是家里没来客人的时候,一个方形桌子可以每人坐一边。来了客人的话,大家要挤一挤,都要挪挪位置。

可以通过命令来查看指定group当前有多少消费者,先确保配置没有配错。

原则是不同的topic不要用相同的groupid. 如果是相同的groupId就表示是干同一件事情。

./kafka-consumer-groups.sh  --bootstrap-server 127.0.0.1:9092 --command-config ../config/consumer.properties --group XXXGROUP --describe

注:command-config命令是在有认证的场景下的参数,如果没有安全认证可以去掉这段。

3.3 消费的数据为什么比kafka服务器上的少

3.3.1 一种常见的情况是配置存在错误,导致一个group存在多个消费者。即数据被其他消费者消费了。

对于一些复杂业务的场景,公用的一个kafka服务器,多个不同的topic之间配置了相同的groupid, 不同的服务之间交叉使用,这样也会导致kafka经常莫名其妙的被reblance了。

3.3.2 另外一种常见的场景是,生产者提交数据的时候消费者并没有启动,这个时候消费者第一次消费一个新group的数据的时候,可以指定从哪里开始消费。如果历史数据产生了,指定从最新的偏移量开始消费,则表面上看起来消费处理的数据比实际的少。

/***
 * earliest: 从最早的开始消费
 * latest: 从最新的偏移量开始消费
 * kafka 默认缓存7天的数据,如果改成earliest,可以获取7天内的所有数据
 */
propsMap.put("auto.offset.reset", "latest");

Kafka常见故障分析总结相关推荐

  1. 低压抽屉柜常见故障处理方法_低压配电设备常见故障分析,处理办法介绍

    低压配电线路作为配电网络中主要的一部分,在其运行的过程中直接影响着人民的生命财产安全.配电线路是电力输送的终端,对于提高电力质量有着至关重要的作用.但由于配电线路走径的复杂性,人为因素和设备因素,都会 ...

  2. 心电信号越界怎么回事_心电监护仪常见故障分析与排除

    心电监护仪常见故障分析与排除 心电监护仪是一种连续实时的无创伤监测患者多种生理参数的监护仪器. 本文结合 EM-6 多 参数仪 ( 北京康宏兴业科技发展有限公司生产 ) 在临床使用巾经常出现的故障现象 ...

  3. 排除表_数字高压表(交直流分压器)常见故障分析

    国电西高为您提供数字高压表(交直流分压器)常见故障分析. 数字高压表是现场测量用的仪器仪表,既可测量直流高压,又可测量交流高压的,整个设备由分压器和测量仪表两部分组成.分压器采用平衡式等电位屏蔽结构, ...

  4. docker常见故障分析

    docker常见故障分析 docker run故障 oci runtime故障 报错原因分析: 解决方法: docker push故障 复现方法: 自建registry随后docker push lo ...

  5. PC机主板常见故障分析和排除

    PC机主板常见故障分析和排除ze]2-B4   PC机主板常见故障分析和排除1u3Ua>A-   主板是整个PC机系统的关键部件,在PC机中起着至关重要的作用.CPU及总线控制逻辑.BIOS芯片 ...

  6. 常用计算机故障处理指令,计算机常见故障分析与维修.ppt

    计算机常见故障分析与维修 项目06 计算机常见故障分析与维修 终极目标:能独立判断.处理电脑出现的常见故障:能运用Windows PE系统维护计算机. 判断电脑出现的常见故障原因,并通过合适的方法解决 ...

  7. 三菱变频器常见故障分析与故障处理方法

    三菱变频器常见故障分析与故障处理方法,三菱变频器E6.E7故障问题,常见系列A700也被我们列在常范围故障之中.下面小编为你分享三菱变频器常见故障分析与故障处理方法. 1.UVT故障 UVT为欠压故障 ...

  8. 三菱电梯维修故障服务器,电梯维保必备:三菱电梯常见故障分析

    原标题:电梯维保必备:三菱电梯常见故障分析 导读 三菱GPS系列电梯的设计成熟,控制系统运行稳定,如果维保正确,故障率很低,而且可以很方便地查打故障代码,容易找到维修的方向.但如有疏忽,出现故障时则很 ...

  9. 横河川仪压力变送器故障代码_压力变送器常见故障分析

    压力变送器常见故障分析 1 .测量管路泄漏所造成的异常 由于绝压变送器的取样点与压力表的取样点是相同的, 而且绝压变送器与压力表有共用的测 量管路及阀门, 所以如果我们在检修过程中, 发现汽轮机及凝汽 ...

最新文章

  1. UC 伯克利华人一作:卷积让视觉 Transformer 性能更强,ImageNet 继续刷点!
  2. r语言x c(-1 -2),【软件】R语言入门之向量
  3. Linux打开txt文件乱码的解决方法
  4. java的vector是什么类_java中vector类
  5. Java虚拟机专题之class文件结构(读书笔记)
  6. unity游戏教程 space shooter (游戏控制器)
  7. 【转】Android中Dalvik(DVM)的详解
  8. JQuery window、document、 body
  9. 【劲峰论道时空分析技术-学习笔记】1 时空数据和时空变量时空过程和时空机理
  10. 微软披露三个 0day 漏洞 分别影响 Word、IE 和 Office
  11. 如何实现微信小程序API的Promise化
  12. c语言dnf脚本源码,dnf纯脚本源码贝贝
  13. 百度ai开放平台体验
  14. Linux/centos备份系统镜像工具
  15. 盘点电脑系统变慢七大原因
  16. Mono.Cecil说明文档翻译
  17. 计算机毕业设计JAVA网上童装销售系统mybatis+源码+调试部署+系统+数据库+lw
  18. 一级网站域名与二级域名的区别,如何注册网站一级域名
  19. 微信小程序的设计以及demo
  20. 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号

热门文章

  1. 101 个 MySQL 的调节和优化的提示(转osc)
  2. 苹果Apple正式发布iPad2一代降价超千元
  3. 鸿蒙华为手机2020上市,华为12月双喜临门:Mate40上市,发布鸿蒙手机,2020完美收官!...
  4. 周鸿祎推动了中国互联网的进步
  5. 移动联通电信频段划分
  6. 生活污水磷超标,磷化工行业磷超标,各种磷超标的深度治理
  7. 支付宝公布2019集五福攻略,准备好薅羊毛的正确姿势...
  8. SAP 汇兑损益的结转
  9. rust: 引用第三方库(Cargo.toml、Cargo.lock文件)
  10. GLAPI/glTexStorage2D