在策展人的重试尝试时,从ZooKeeper处理EndOfStreamException?

时间:2017-11-30 21:50:12

标签: apache solr cluster-computing apache-curator

我正在使用Apache Curator框架创建一个由ZK管理的集群。

如果群集中的某个节点突然失去与ZK的连接,它会每隔5秒尝试重新连接一次。我使用RetryForever政策并指定了相应的时间。

虽然 sessionTimeout / connectionTimeouts 尚未完全消失,但我们仍在尝试重新连接。

但即使我们在这段时间内提出了ZK并获得了与它的联系,我们仍然在日志中收到奇怪的消息:

  

11月30日星期四20:47:51.574 GMT 2017 |信息| org.apache.zookeeper.ClientCnxn $ SendThread |建立到zk_1.default / 138.122.177.23:2181的套接字连接,启动会话|客户端详细信息{sessionTag:{}} |本地主机 - startStop -1- SendThread(zk_1.default:2181)

     

11月30日星期四20:47:51.592 GMT 2017 |信息|   org.apache.zookeeper.ClientCnxn $ SendThread |无法阅读其他内容   来自服务器sessionid 0x1600ea13dcd0000的数据,可能服务器已关闭   套接字,关闭套接字连接并尝试重新连接|客户端   详情{sessionTag:{}} |   本地主机 - startStop -1- SendThread(zk_1.default:2181)

为什么我们仍然收到这些消息并且无法完全连接到新出现的ZK节点?

P.S。:

1)稍后我发现这个error意味着ZK已经耗尽了 maxClientCnxns (与ZK的最大连接数)参数,但我还没有找到使用Curator进行配置...仅在测试中...

2)在ZK服务器端,我看到以下错误:

  

2017-12-04 15:48:29,972 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0 / 0.0.0.0:2181:NIOServerCnxnFactory @ 192] - 来自/192.168.107.4:37130的接受套接字连接   2017-12-04 15:48:29,974 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0 / 0.0.0.0:2181:ZooKeeperServer @ 915] - 拒绝客户端/138.122.177.23:37130的会话请求看到zxid 0xd我们的最后一个zxid​​是0x0,客户端必须尝试另一台服务器

1 个答案:

答案 0 :(得分:2)

答案就在这里:http://grokbase.com/t/cloudera/cdh-user/134hrpr3nc/zookeeperserver-refusing-session-request-for-client-any-ideas

这意味着客户端正在与ZK服务器通话并且最后看到了事务 ID 0x11be4(或十进制的72676)。它正在尝试的当前服务器 连接当前有事务ID 0x3f82(或十进制16258) 是(很)低。假设客户端看到的数据比后者多 服务器可以提供什么,可能导致冲突 信息。它没有给客户提供不好的(过时的)信息,而是拒绝 假设客户端将重新连接到的连接 仲裁中的另一台服务器,包含更多最新数据或当前数据 过期的服务器最终将从另一个法定数量级收到快照 成员赶上来。