转载请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/5621303.html

最近发现kafka一台服务器producer客户端写入时一直报错,查看该broker服务日志发现日志一直输出下面的内容,看上去应该是broker尝试在zk上注册节点但是产生了session冲突之类的问题。

[2016-06-27 17:05:56,608] INFO I wrote this conflicted ephemeral node [{"jmx_port":9999,"timestamp":"1467018354343","host":"xxx.kafka.hadoop.qingdao.youku","version":1,"port":9090}] at /brokers/ids/15 a while back in a different session, hence I will backoff for this node to be deleted by Zookeeper and retry (kafka.utils.ZkUtils$)

google发现与下列jira上的bug表述的问题是一样的,尤其是1387上James Lent 描述的bug复现过程基本解释清楚了为什么会产生这个问题。

https://issues.apache.org/jira/browse/KAFKA-1393

https://issues.apache.org/jira/browse/KAFKA-1387

注意这句话 Kafka broker re-registers itself in zookeeper every time handleNewSession() callback is invoked.

    def handleNewSession() {
info("re-registering broker info in ZK for broker " + brokerId)
--> register()
info("done re-registering broker")
info("Subscribing to %s path to watch for new topics".format(ZkUtils.BrokerTopicsPath))
}

假定有下列场景

1 kafka服务端的zkclient与zk服务器session超时,我们给这个session取名为session-a

2 zkclient重新与zkserver建立session-b,但是handleNewSession()事件卡住没有触发,我们给这次方法回调起名handleNewSession-a

3 session-b再次超时

5 继续重连进入session-c,handleNewSession()注册临时节点成功,session-c稳定存在

6 handleNewSession-a 调用,但是handleNewSession-a持有的是session-b无法成功

7  handleNewSession-a 不断重试建立连接,进入死循环。

查看zk日志发现出现问题的broker的确在zkserver产生了三次Accepted socket connection行为,其中第三次连接建立后broker日志开始产生conflicted ephemeral node错误日志并不断死循环,所以证明该服务器的确是经历了上述过程,重启broker后问题解决,但是broker服务器handleNewSession第一次阻塞的原因暂时还没有查清楚,目前看来跟集群reblance有关系

kafka broker 进入 conflicted ephemeral node 死循环的更多相关文章

  1. spark streaming 接收kafka消息之三 -- kafka broker 如何处理 fetch 请求

    首先看一下 KafkaServer 这个类的声明: Represents the lifecycle of a single Kafka broker. Handles all functionali ...

  2. Failed deleting my ephemeral node

    2017-01-05 11:07:39,490 WARN zookeeper.RecoverableZooKeeper: Node /hyperbase1/rs/tw-node1217,60020,1 ...

  3. 关于Kafka broker IO的讨论

    Apache Kafka是大量使用磁盘和页缓存(page cache)的,特别是对page cache的应用被视为是Kafka实现高吞吐量的重要因素之一.实际场景中用户调整page cache的手段并 ...

  4. Kafka broker配置介绍 (四)

    这部分内容对了解系统和提高软件性能都有很大的帮助,kafka官网上也给出了比较详细的配置详单,但是我们还是直接从代码来看broker到底有哪些配置需要我们去了解的,配置都有英文注释,所以每一部分是干什 ...

  5. Kafka 单节点多Kafka Broker集群

    Kafka 单节点多Kafka Broker集群 接前一篇文章,今天搭建一下单节点多Kafka Broker集群环境. 配置与启动服务 由于是在一个节点上启动多个 Kafka Broker实例,所以我 ...

  6. Kafka 单节点单Kafka Broker集群

    下载与安装 从 http://www.apache.org/dist/kafka/ 下载最新版本的 kafka,这里使用的是 kafka_2.12-0.10.2.1.tgz $ tar zxvf ka ...

  7. kafka broker Leader -1引起spark Streaming不能消费的故障解决方法

    一.问题描述:Kafka生产集群中有一台机器cdh-003由于物理故障原因挂掉了,并且系统起不来了,使得线上的spark Streaming实时任务不能正常消费,重启实时任务都不行.查看kafka t ...

  8. Kafka Broker | 命令行选项和过程

    1.目标 在这个Apache Kafka教程中,我们将学习Kafka Broker.Kafka Broker管理主题中的消息存储.如果Apache Kafka有多个代理,那就是我们所说的Kafka集群 ...

  9. 2 Kafka Broker

    Log的读写.删除流程---日志管理器(log manager)负责创建日志.获取日志.清理日志.所有的日志读写操作都交给具体的日志实例来完成. KafkaServer启动的时候,初始化三个类: Lo ...

随机推荐

  1. jsonp多次请求报错 not a function的解决方法

    添加时间戳给callbackId $.ajax({ type: "get", url: url, timeout: 6000, data: param, cache: false, ...

  2. centos下redis安装

    下载redis http://www.redis.cn/download.html 下载php的redis扩展 https://github.com/phpredis/phpredis#install ...

  3. SQL 多条件查询

    网上有不少人提出过类似的问题:“看到有人写了WHERE 1=1这样的SQL,到底是什么意思?”.其实使用这种用法的开发人员一般都是在使用动态组装的SQL.让我们想像如下的场景:用户要求提供一个灵活的查 ...

  4. cocos2d-x笔记4: TextField不能删除内容,以及我的解决办法。。。

    3.0正式版,win32下,TextField按下backspace键不能删除内容.网上搜了下,很早就有的问题了,正式版了竟然还不解决... 真心无力吐槽啊!!!这种巨大而又明显的Bug... 从昨天 ...

  5. Morgan stanley 电话面试

    首先是聊项目, 不会涉及到具体的技术问题 1.C和C++的区别:C++里的RTTI 2.vector 和 list的区别 : casting operator ; smart pointer. 3.数 ...

  6. 第 16 章 观察者模式【Observer Pattern】

    以下内容出自:<<24种设计模式介绍与6大设计原则>> <孙子兵法>有云:“知彼知己,百战不殆:不知彼而知己,一胜一负:不知彼,不知己,每战必殆”,那怎么才能知己知 ...

  7. adb logcat 查看日志

    使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] .. ...

  8. 花20分钟写的-大白话讲解如何给github上项目贡献代码

    原文地址:http://site.douban.com/196781/widget/notes/12161495/note/269163206/ 本文献给对git很迷茫的新手,注意是新手,但至少会点基 ...

  9. ANDROID_MARS学习笔记_S04_007_从服务器获取微博数据时间线

    一.代码 1.xml(1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  10. 解决crystal report水晶报表在浏览器提示bobj未定义的错误

    网上的中文文章(比如这篇文章)都是写的部署到服务器后出现的问题,同时也指出要把crystal report的aspnet_client文件夹拷贝到对应项目的根目录里,这样就可以正常显示了,但是具体到我 ...