【zookeeper】zookeeper 总是重启 poolSendQueue InterruptedException

在这里插入图片描述

1.概述

一个环境zookeeper总是无故停止,然后我去手动拉起后过一段时间就会挂掉了。今天终于忍不住去看看为什么总是挂在,日志里里面看到有如下报错

2017-10-01 11:36:55,983 [myid:0] - WARN  [RecvWorker:0:QuorumCnxManager$RecvWorker@762] - Connection broken for id 0, my id = 0, error = 

java.io.EOFException
    at java.io.DataInputStream.readInt(DataInputStream.java:392)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.run(QuorumCnxManager.java:747)

2017-10-01 11:36:55,983 [myid:0] - WARN  [RecvWorker:0:QuorumCnxManager$RecvWorker@765] - Interrupting SendWorker
2017-10-01 11:36:55,984 [myid:0] - WARN  [SendWorker:0:QuorumCnxManager$SendWorker@679] - Interrupted while waiting for message on queue
  java.lang.InterruptedException
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2
017)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2095)
    at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:389)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.pollSendQueue(QuorumCnxManager.java:831)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.access$500(QuorumCnxManager.java:62)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$SendWorker.run(QuorumCnxManager.java:667)
2017-10-01 11:36:55,985 [myid:0] - WARN  [SendWorker:0:QuorumCnxManager$SendWorker@688] - Send worker leaving thread


2017-10-01 11:37:00,222 [myid:0] - ERROR [QuorumPeer[myid=0]/0:0:0:0:0:0:0:0:2181:Learner@229] - Unexpected exception
  java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at org.apache.zookeeper.server.quorum.Learner.connectToLeader(Learner.java:224)
    at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:71)
    at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)

还没找到相关解决方案

相似的问题参考:zookeeper 重启报错 发送数据报错

zookeeper 启动失败

  1. 网络通信问题:

java.io.EOFException 表示在读取数据时遇到了文件结束符,通常意味着在预期的数据未完全到达时连接被关闭。这可能是因为Zookeeper集群中的节点之间网络不稳定或有节点异常下线导致的。

java.net.ConnectException: Connection refused 表明尝试连接到Leader节点时被拒绝,可能是由于Leader节点不可达或者网络层面的问题。

  1. 选举与同步问题:

当节点间通信中断时,Zookeeper的仲裁机制会受到影响,节点无法正常进行选举和数据同步,进而可能导致整个集群服务不可用。

解决此类问题可以按照以下步骤进行排查和处理:

检查Zookeeper集群中所有节点的网络状况,确保它们之间能够正常通信,没有防火墙、安全组规则或其他网络配置的阻隔。

查看集群配置文件(zoo.cfg),确认各个节点的myid设置是否正确,以及server列表配置无误。

检查服务器资源使用情况(CPU、内存、磁盘空间等),避免因资源耗尽导致节点崩溃。

验证集群中其他节点的日志,了解是否有类似错误以及是否存在潜在的 Leader 节点故障。

如果是临时性的网络波动造成的问题,可以适当增加Zookeeper的session超时时间和重试次数等相关配置参数,提高其对网络抖动的容忍度。根据这些信息,建议您重点检查集群节点间的网络连接,并确保Zookeeper集群配置正确无误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值