kafka broker 进入 conflicted ephemeral node 死循环
来源:互联网 发布:知乎 完颜亮 编辑:程序博客网 时间:2024/04/28 13:12
转载请注明原创地址 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 死循环
- kafka I wrote this conflicted ephemeral node
- SVN clearup 进入死循环
- Failed deleting my ephemeral node
- ADS调试程序时进入死循环
- 输入类型检查,防止进入死循环
- linux c/c++ while();进入死循环
- 快速排序防止进入死循环!!
- 杀死进入死循环的进程
- hbase ‘ Failed deleting my ephemeral node’解决
- Kafka broker配置介绍
- kafka配置-----broker配置
- Kafka-broker配置说明
- Kafka broker配置介绍
- kafka broker集群
- kafka 0.9 broker 参数
- Kafka Broker HA机制
- Kafka:Broker Config 配置
- Python numpy库中的array,list与矩阵的乘法,以及增添元素的方法
- C++排序算法之希尔排序
- 面试:----Struts和springmvc的区别--区别上
- python的输入
- Qt标准对话框之QFontDialog
- kafka broker 进入 conflicted ephemeral node 死循环
- 1、socket是什么意思
- 使用HttpURLConnection访问网络——加载网络图片
- Web0 准备
- 面试:----Struts和springmvc的区别--区别下
- 《Effective C++》(二)
- spring事务管理
- 2、一个简单的Linux下的socket程序
- dell xps13如何快速锁定Fn键