【问题标题】:ZooKeeper keeps getting EndOfStreamException, causing a crashZooKeeper 不断收到 EndOfStreamException,导致崩溃
【发布时间】:2016-12-17 16:44:51
【问题描述】:

我的 Zookeeper 为不同的作业控制几个不同的队列,方法是在每个节点中保存相关的作业数据,直到计算机准备好处理。 如果我停止整个服务,这样就无法启动任何作业 ZooKeeper 在重新启动后运行得很好。但是,其中一些作业似乎会导致 ZooKeeper 崩溃,并在 ZooKeeper 日志中显示以下消息:

WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@349] - caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x15677f740ad002a, likely client has closed socket
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)
        at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
        at java.lang.Thread.run(Thread.java:745)
INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1001] - Closed socket connection for client /127.0.0.1:46998 which had sessionid 0x15677f740ad002a

我的 ZooKeeper 知识非常有限,因为我正在接替最初设置它的人。

我试图在 zookeeper shell 中删除很多带有rmr [path] 的节点,这似乎有一些效果(删除了 50k+ 个剩余/无用的节点),但它每天都在崩溃,最后晚上,在发生相同的错误/崩溃之前,我无法让它运行超过几分钟。

如何找出造成这种情况的原因?

我很确定这是接收到的数据或存储的数据/节点的一些普遍问题。磁盘只有 92% 已满。 我还发现了这篇文章:Zookeeper keeps getting the WARN: "caught end of stream exception",但该解决方案对我来说没有多大意义。此外,我很确定我的 znode 中保存的消息都没有超过 1MB,但我不确定如何确认。

是否可以通过某种方式更改 ZooKeeper 日志,以便打印其他信息,例如它在崩溃之前正在运行的 znode 的内容/名称?

【问题讨论】:

    标签: logging crash apache-zookeeper


    【解决方案1】:

    我能够通过从运行 ZooKeeper 的服务器上删除所有 zookeeper 快照和日志文件来解决问题。我不知道为什么这会有所不同,但它在过去 22 小时内一直运行良好。

    【讨论】:

    • 删除 Zookeeper 快照和日志后,您的服务器是否仍然运行良好?还是您必须不时这样做?
    • 它偶尔会继续崩溃。该问题并未永久解决。每次删除日志和快照似乎都有帮助,尽管我现在也尝试删除 ZooKeeper 中的所有节点。
    【解决方案2】:

    **此异常是会话数据流结束的指示符。它通常发生在关闭与 zookeeper 的连接时。此异常并不表示 zookeeper 端存在缺陷。相反,它显示与客户端的连接已重置或关闭。 所以请忽略警告。

    2020-08-17 09:05:05 WARN NIOServerCnxn:368 - 捕获流异常结束 EndOfStreamException:无法从客户端 sessionid 0x373fb86e57b0018 读取附加数据,可能客户端已关闭套接字 在 org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:239) 在 org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:203) 在 java.lang.Thread.run(Thread.java:748) 2020-08-17 09:05:05 INFO NIOServerCnxn:1044 - 已关闭会话 ID 为 0x373fb86e57b0018 的客户端 /xx.xx.xx.xx:55380 的套接字连接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2017-04-04
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多