一个Zk connection timeout 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Zk connection timeout 问题相关的知识,希望对你有一定的参考价值。

参考技术A

昨天晚上临下班,看到同事因为图片上传的问题在那里被吼。 就手痒过去帮一把。 结果改了下tomcat的参数,系统启动不了了。
我曹手不会这么臭吧,忙没帮上结果还帮坏了。

冷静冷静,看看情况。

tomcat 启动不起来,主要是应用依赖的 dubbo 服务无法注入(spring beans 依赖)、
服务无法注入是因为日志里面报 ZkConnect 超时

zk server服务检查了,正常
telnet 可以达,可以执行命令,证明网络是ok的
不死心,重启另外一个zk dubbo 应用,没有问题。
主机上zkCli.sh 可以使用,证明问题主要在本地。

中间开始麻爪,另外一个哥们尝试删除zk上的dubbo服务节点、更换本地服务端口号,无果。

比对起不来的工程和能起来的工程,发现问题
Zookeeper jar包版本不对 起不来的工程zookeeper jar包版本是3.3.3 ,能启动的是 3.4.6

替换zk jar包后启动OK

再次诅咒发版的粗心人

zookeeper not connected

关于SpringBoot + dubbo启动时,连接zookeeper出现问题,先来看一下异常情况

技术图片

 下面是关于这个问题我所总结的一些解决方案,希望能对你有所帮助

  1、 检查zk所在机的防火墙。 systemctl stop firewalld | service firewalld stop(这里使用的是CentOS8镜像)
  2、 检查zk所在机的ip和yml配置中的ip是否对应
  3、 检查zk是否成功启动。 $zk_home/bin/zkServer.sh status -> standalone
  4、 在yml配置文件中增加新的配置,提高连接zk的访问超时时间。(有可能是虚拟机网络不稳定造成连接zk的时候,出现超时)。dubbo中的默认超时配置是3秒。
    dubbo:
      config-center:
        timeout: 10000 # 单位是毫秒。
  5、 在启动类型上增加新的注解, @EnableDubboConfig。 人为强制要求dubbo-spring-boot-starter扫描配置并加载。 dubbo是自动扫描配置并加载的。
  6、 修改版本。降低spring-boot和dubbo-spring-boot-starter版本。(版本问题是win10操作系统对权限管理加强后,导致的结果。)
    6.1、 先降低dubbo-spring-boot-starter 到 2.7.3 -> 2.7.0
    6.2、 再考虑降低spring-boot版本 到 2.2.0 -> 2.1.10 -> 2.0.2

同时虚拟机的网络也是有一定的影响,如何提高虚拟机的网络稳定呢?  

  1、 关闭不必要的网卡
  2、 关闭所有的热点软件
  3、 关闭windows防火墙

以上是关于一个Zk connection timeout 问题的主要内容,如果未能解决你的问题,请参考以下文章

INBOUND_CONNECT_TIMEOUT与SQLNET.INBOUND_CONNECT_TIMEOUT小结

SOCKET_CONNECT_TIMEOUT is the timeout for the connection to be established and SOCKET_TIMEOUT

在 PHP 中,啥对应于 MySQLi 中的 mysql.connect_timeout?

如何使用 Connect_Net 的密码连接到 zk ua300?

Operation timeout SequelizeConnectionAcquireTimeoutError: Operation timeout

C connect实现Timeout效果(Windows)