zk api连接超时问题 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for

遇到 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for / 的问题
image

首先让我想到的是,zk所在服务器是开启了防火墙吗?确定防火墙没有开启后,继续从代码中查找问题,最后定位到ClientCnxn类中 SendThread线程中的startConnect() 方法。
image
从截图中可以看出,hosename为null,意味着addr.getHostName()获取hostname需要从InetAddress.getHostFromNameService(this, check)获取,这个获取hostname是非常耗时的,一般要20s左右
image
image
image

最后的解决方案:
在hosts文件中,增加一行
ip host
例如
192.168.6.100 192.168.6.100

如果是集群环境,可以多加几条ip和host

posted @ 2022-10-12 14:49  尐海爸爸  阅读(1378)  评论(0编辑  收藏  举报