【发布时间】: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