org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss

前言:

使用Dubbo时,运行provider的时候,接收端一直在报错,在网上找了很多方法!在此总结一下!

异常:

异常:

org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss

具体异常信息如下:

org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss
	at org.apache.curator.ConnectionState.checkTimeouts(ConnectionState.java:225) [curator-client-2.12.0.jar:na]
	at org.apache.curator.ConnectionState.getZooKeeper(ConnectionState.java:94) [curator-client-2.12.0.jar:na]
	at org.apache.curator.CuratorZookeeperClient.getZooKeeper(CuratorZookeeperClient.java:117) [curator-client-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CuratorFrameworkImpl.getZooKeeper(CuratorFrameworkImpl.java:489) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:740) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:723) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:109) [curator-client-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:720) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:484) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:474) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:454) [curator-framework-2.12.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:44) [curator-framework-2.12.0.jar:na]
	at com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createPersistent(CuratorZookeeperClient.java:76) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.create(AbstractZookeeperClient.java:65) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.create(AbstractZookeeperClient.java:59) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.create(AbstractZookeeperClient.java:59) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.create(AbstractZookeeperClient.java:59) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.doRegister(ZookeeperRegistry.java:114) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.registry.support.FailbackRegistry.retry(FailbackRegistry.java:315) [dubbo-2.6.2.jar:2.6.2]
	at com.alibaba.dubbo.registry.support.FailbackRegistry$1.run(FailbackRegistry.java:68) [dubbo-2.6.2.jar:2.6.2]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_191]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_191]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_191]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_191]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_191]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_191]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]

[2m2020-02-26 23:35:45.610[0;39m [32m INFO[0;39m [35m7040[0;39m [2m---[0;39m [2m[8.182.130:2183)][0;39m [36morg.apache.zookeeper.ClientCnxn         [0;39m [2m:[0;39m Session establishment complete on server 192.168.182.130/192.168.182.130:2183, sessionid = 0x30002d1ffab0000, negotiated timeout = 40000
[2m2020-02-26 23:35:46.108[0;39m [32m INFO[0;39m [35m7040[0;39m [2m---[0;39m [2m[d-1-EventThread][0;39m [36mo.a.c.f.state.ConnectionStateManager    [0;39m [2m:[0;39m State change: CONNECTED
可能原因如下:

1. zookeeper节点或集群的防火墙未关闭。这样会导致Linux为开放zookeeper的客户端连接的端口无法连接
检查防火墙状态(命令根据自己使用的Linux产品):(本文原因以为成功永久关闭)

centos6.5 :service iptables status   #查看防火墙状态
			service iptables stop     #临时关闭防火墙
			chkconfig iptables off    #永久关闭防火墙
centos7.x :systemctl status firewalld.service(or:firewall-cmd --state)   #查看防火墙状态
			systemctl stop firewalld.service     #临时关闭防火墙
			systemctl disable firewalld.service     #永久关闭防火墙(禁止防火墙开机启动)
ubuntu   :sudo ufw status    #查看防火墙状态
		   sudo ufw disable   #关闭防火墙
		   sudo ufw enable    #打开防火墙

演示图:在这里插入图片描述
2. 使用zookeeper原生的客户端API连接时,设置的sessionTimout时间太短,这个时间个人认为必须要大于zookeeper配置文件中的一个心跳的时间,如果小于一个心跳的时间,zookeeper给客户端发送心跳的时候客户端还没有收到就已经超时了,永远也不会连上;所以如果zookeeper的一个心跳时间是2000ms,那么至少客户端的sessTimout时间是3000ms

3. 网络不稳定,这种情况就是客户端和zookeeper之间网络连接不稳定的情况下也会导致这个问题;在客户端和zookeeper的服务器上互相ping一下看看是否有网络丢包率的存在

4. 如果以上三种情况都不是,那么就要检查zookeeper集群有没有在正常运行,如果是可以运行的,那么检查一下客户端连接的url是否有问题,集群的话必须保证每个地址都是对的,不然也是无法连接的

	ps -ef |grep zookeeper  #根据使用的版本

演示图:在这里插入图片描述
若以上排查皆无法解决,可能是由于其他原因导致!请自行排查或者留言!有时候需要检查一下配置文件!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值