ZooKeeper不断获得EndOfStreamException,导致崩溃

afdcj2ne  于 2022-12-09  发布在  Apache
关注(0)|答案(2)|浏览(1000)

我的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]的节点,这似乎有一些效果(删除了50 k+个剩余/无用的节点),但是它每天都在崩溃,昨天晚上我无法让它运行超过几分钟,否则同样的错误/崩溃就会发生。

如何找出导致此问题的原因?

我很肯定这是一些一般性的问题,与数据接收,或存储的数据/节点。磁盘只有92%满。我还发现了这个职位:Zookeeper keeps getting the WARN: "caught end of stream exception",但是这个解决方案对我来说没有多大意义。而且我很确定我的znode中保存的消息都没有超过1 MB,但是我不确定如何确认这一点。

有没有什么方法可以更改ZooKeeper日志,以便在崩溃之前打印附加信息,例如正在运行的znode的内容/名称?

8yparm6h

8yparm6h1#

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

a8jjtwal

a8jjtwal2#

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

2020-08-17 09:05:05警告NIOServerCnxn:368 -捕获到流结束异常EndOfStreamException:无法从客户端会话ID 0x 373 fb 86 e57 b 0018读取其他数据,可能是客户端已关闭位于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信息NIOServerCnxn:1044 -已关闭会话ID为0x 373 fb 86 e57 b 0018的客户端/xx. xx. xx.xx:55380的套接字连接

相关问题