当前位置: 代码迷 >> 综合 >> zookeeper 链接异常 java.lang.IllegalStateException: zookeeper not connected
  详细解决方案

zookeeper 链接异常 java.lang.IllegalStateException: zookeeper not connected

热度:11   发布时间:2023-11-16 21:54:13.0

文章目录

  • 问题
  • 解决过程
    • 设置超时时间
    • 修改host文件

问题

内网下,java程序不能正常链接zookeeper,使用GUI程序,可以正常链接zookeeper

 java.lang.IllegalStateException: zookeeper not connectedat org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:83) ~[dubbo-2.7.7.jar:2.7.7]at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26) ~[dubbo-2.7.7.jar:2.7.7]at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:70) ~[dubbo-2.7.7.jar:2.7.7]……

解决过程

设置超时时间

断点调试,发现 url 中timeout为3000,即3秒。考虑适当增加超时时间。改为60000后,可以登录zookeeper。修改方式如下:

dubbo.registry.address=zookeeper://10.10.10.10:2181?timeout=60000

修改host文件

修改超时事件后,可以登录,但依旧会卡大概二十秒左右。按说在内网环境下,不应该这样。于是继续去找,最终发现和之前遇到的一个情况类似,getHostName方法阻塞了很长时间。所以可以在host文件中,添加zookeeper服务器的ip。让getHostName直接使用hosts里面的dns结果。

ip1 host1
ip2 hosts2

添加后,卡顿彻底解决。

  相关解决方案