zk api连接超时问题 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for
遇到 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for / 的问题
首先让我想到的是,zk所在服务器是开启了防火墙吗?确定防火墙没有开启后,继续从代码中查找问题,最后定位到ClientCnxn类中 SendThread线程中的startConnect() 方法。
从截图中可以看出,hosename为null,意味着addr.getHostName()获取hostname需要从InetAddress.getHostFromNameService(this, check)获取,这个获取hostname是非常耗时的,一般要20s左右
最后的解决方案:
在hosts文件中,增加一行
ip host
例如
192.168.6.100 192.168.6.100
如果是集群环境,可以多加几条ip和host