问题描述
项目是springboot 项目,通过dubbo 对各个模块进行调用,在项目启动的时候,zookeeper 客户端报如下错误。
Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
原因分析:
先进入机器 telnet zookeeper 服务器机器
telnet 10.20.3.31 2181
Trying 10.20.3.31...
Connected to 10.20.3.31.
Escape character is '^]'.
Connection closed by foreign host.
可以看到其实2181 这个端口是通的,但刚连通就被服务器拒绝。
这个是时候换了另外一台机器,telnet zookeeper 主机 端口 发现zookeeper 主机没有被拒绝。
单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
- 查看服务器2181端口已有连接数
[root@hdfs-10-18-0-31 ~]# netstat -tanp | grep 2181 | awk '{print $5}' | grep -E '([0-9]+\.){3}[0-9]+' -o | sort | uniq -c
11 10.20.3.31
netstat -tanp | grep 2181
查看具体具体应用和状态,发现10个连接是 ESTABLISHED 还有一个是TIME-WAIT 发现只有10个连接
进入 zookeeper conf/zoo.cfg 查看配置,发现 -maxClientCnxns 并未配置,
但配置initLimit=10。那按道理是最大连接应该60才对,还没到达上限
通过下面命令,确实只有10个连接。文章来源:https://www.toymoban.com/news/detail-531685.html
cat /proc/net/nf_conntrack | grep 2181 | awk '{print $7}'|sort|uniq -c
10 src=10.20.3.31
netstat -tanp | grep 2181 查看启动进程有哪些,杀掉其中两个进程。
telnet zookeeper 主机 端口 不再被拒绝,重新启动启动失败的服务启动成功。现在可以判定是zookeeper 针对单个ip限制到10个,添加zoo.cfg 配置maxClientCnxns=60文章来源地址https://www.toymoban.com/news/detail-531685.html
到了这里,关于zookeeper Unable to read additional data from server sessionid 0x0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!