最近用到kafka,使用过程中发送和接收数据却出现了诸多异常。有一个异常很诡异,如下:
Exception in thread "main" kafka.common.ConsumerRebalanceFailedException:
groupB_ip-10-38-19-230-1414174925481-97fa3f2a can't rebalance after 4
retries
at
kafka.consumer.ZookeeperConsumerConnector$ZKRebalancerListener.syncedRebalance(ZookeeperConsumerConnector.scala:432)
at
kafka.consumer.ZookeeperConsumerConnector.kafka$consumer$ZookeeperConsumerConnector$$reinitializeConsumer(ZookeeperConsumerConnector.scala:722)
at
kafka.consumer.ZookeeperConsumerConnector.consume(ZookeeperConsumerConnector.scala:212)
at kafka.javaapi.consumer.Zookeeper……
debug发现,在Consumer端,代码跑到
Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = this.consumer .createMessageStreams(topicCountMap);
这一行就“卡住不动”了,并且出现上述异常。上网搜索相关解决方案。说是把Consumer端的zookeeper.sync.time.ms属性设置得大一点,尝试之后,问题依旧。。
直到我在下面的地址发现了一个比较靠谱的解决方法:
https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-Myconsumerseemstohavestopped,why?>
援引自英文原文:
- consumer rebalancing fails (you will see ConsumerRebalanceFailedException): This is due to conflicts when two consumers are trying to own the same topic partition. The log will show you what caused the conflict (search for "conflict in ").
- If your consumer subscribes to many topics and your ZK server is busy, this could be caused by consumers not having enough time to see a consistent view of all consumers in the same group. If this is the case, try Increasing rebalance.max.retries and rebalance.backoff.ms.
- Another reason could be that one of the consumers is hard killed. Other consumers during rebalancing won't realize that consumer is gone after zookeeper.session.timeout.ms time. In the case, make sure that rebalance.max.retries * rebalance.backoff.ms > zookeeper.session.timeout.ms.
然后我尝试了粗体部分的解决方法,在Consumer端设置两个属性如下:
props.put("rebalance.max.retries", "5"); props.put("rebalance.backoff.ms", "1200");
并确保5*1200=6000的值大于zookeeper.session.timeout.ms属性对应的值(这里我是5000)。再次分别启动Producer端和Comsumer端,问题果然解决了。
注:服务端Producer的metadata.broker.list属性最好不止一个,这样也就要求你做负载均衡。
PS:对于kafka的一些异常需要比较清楚地去了解它的运行机制,但我没这么多时间。所以就临时抱佛脚去解决问题了。
相关推荐
MySQL数据库疑难杂症排查 MySQL 数据库是一种关系型数据库管理系统,广泛应用于各种 Web 应用程序中。但是,在实际应用中,我们经常会遇到各种问题,例如数据库打开速度慢、查询效率低、服务器负载高等问题。因此...
笔记可能讲解了异常分类、何时抛出异常、如何编写好的异常处理代码,以及如何通过日志记录异常信息来定位问题。 第四,Java集合框架是另一个重要的知识点。笔记可能详细解析了List、Set、Map等各种接口的实现类,...
数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order’ at line...
### Mongodb疑难杂症及优化 #### 一、Oplog问题概述 Oplog是MongoDB复制的核心机制之一,用于记录数据库中的更改事件。通过维护一个全局有序的日志,MongoDB可以确保副本集中的各个成员能够同步最新的数据变更。...
### Java 疑难杂症知识点详解 #### Jdk、Jre、Jvm区别 - **Jdk (Java Development Kit)**:Java开发工具包,包含了编译、运行Java程序所需的各种工具,例如`javac`(Java编译器)、`java`(Java解释器)以及其他...
12. **技术支援**:鼓励用户加入交流群,与其他同行交流经验,同时提供了各种解决问题的方法,如CAD图块分解、软件异常处理等。 在使用过程中,遇到CAD图块分解问题,可以通过输入特定命令或使用辅助程序来解决。...
17个Docker常见疑难杂症解决方案汇总.docx
《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: 前台获取username和user...
本篇文章将深入探讨如何解决Outlook中的常见疑难杂症。 一、邮件导出与备份 邮件导出是确保重要数据安全的重要步骤。在Outlook中,你可以通过以下步骤导出邮件: 1. 打开Outlook,点击“文件”菜单。 2. 选择...
在IT领域,系统疑难杂症处理是每个用户和专业技术人员都可能遇到的挑战。系统问题可能涵盖硬件故障、软件冲突、驱动程序问题、操作系统错误、病毒攻击、性能下降等多种情况。针对标题和描述中提到的“系统疑难杂症...
《RoseHA for Windows疑难杂症问题及解决办法》 RoseHA for Windows是一款针对Windows操作系统的高可用性解决方案,旨在确保关键业务服务的连续运行。在使用RoseHA时,可能会遇到各种问题,本文档将深入探讨这些...
处理Excel疑难杂症时,可能会遇到以下几种情况: 1. **错误处理**:在使用COM对象时,可能会遇到文件已被其他进程占用、路径错误等问题。我们需要捕获并处理这些异常,确保程序的稳定运行。 2. **性能优化**:大量...
MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化...
"各类电脑疑难杂症处理"这个主题旨在提供一个全面的解决方案集,帮助用户解决他们在日常使用电脑时遇到的困扰。下面,我们将深入探讨一些常见的电脑问题以及相应的处理方法。 1. **硬件问题**:电脑硬件故障可能是...
4. 先一般后特殊:先处理常见的“通病”,然后集中精力解决疑难杂症。 5. 先外部后内部:尽量避免不必要的拆卸,先通过外部调试缩小故障范围,再深入内部检查。 6. 先不通电检查,后通电测试:防止通电导致故障...
【电脑疑难杂症】是指在使用计算机过程中遇到的复杂或难以解决的问题,这些问题可能是硬件故障、软件冲突、系统错误或是网络连接问题等。本篇文章主要从网络中的PAT、主板的PAT以及过程分析技术(PAT)三个方面进行...
BT5下CDLinux+U盘启动破解无线网络,解决各种破解中的疑难杂症归类.pdf
吐司工具类码云地址:博客地址:已投入公司项目多时,没有任何毛病,可胜任任何需求,想了解实现原理的可以点击此链接查看: 源码本框架意在解决一些常见需求,如果是有一些极端的需求推荐使用集成步骤dependencies ...
一、疑难杂症 def test_scopt(): print (x) #x是test_scopt()的局部变量,但是在打印时并没有绑定内存对象。 x = 30 #因为这里,所以x就变为了局部变量 test_scopt() x = 40 def test_scopt(): print(x) x = 30...
《CorelDraw疑难杂症速查手册》收集了作者木平与各位平面设计同仁相互探讨提出的问题以及百度CD吧的提问,结合实际操作和工作中遇到的问题整理而成。其中有些问题参考了吧中好友和网络上同道中人的回答,对于一些不...