今天日常更新内网(LINUX服务器)项目,准备进行测试。出现一个意料之外的错误,提示说项目连接zookeeper失败。一直在尝试进行重连。
最后问题解决了,在此分享下处理问题的过程和经验。
前面各种重试的逗比操作就不跟你们聊了。。。。。
正文来了。
总结下网上的说法,项目连接zookeeper失败的几种可能,
1.zookeeper服务挂了,一般情况下不会,而且这种情况也挺容易发现的。建议出现连接失败后第一反应是想查看zookeeper服务。
2.连接数过多。(我就是这种情况)
先说怎么查看连接数。
netstat -na | grep 2181 | wc -l
执行上述命令后可以看到当前服务器连接2181的链接数(如果zookeeper端口不是2181的请自行修改命令)
netstat -na | grep 2181
这个命令是查看具体连接的详细情况
一般zookeeper默认的单个IP服务器的连接数是60,这就可以确认是不是连接数过多导致的问题。
连接数过多的问题有两种解决方案。
1.修改zookeeper的zoo.conf配置文件中的maxClientCnxns配置。没有的可以加上,附上这个配置的详解
maxClientCnxns:默认为60,不支持以系统属性方式配置。从Socket层面限制单个客户端与单台服务器之间的并发连接数,即以ip地址来进行连接数的限制。如果设置为0,表示不做任何限制。仅仅是单台客户端与单个Zookeeper服务器连接数的限制,不能控制所有客户端的连接数总和。
2.用netstat -na | grep 2181命令查询当前连接的程序,无用的全部的kill掉。如果都是要用的,就去修改zookeeper的配置来实现
给后人少走弯路的经验,有兴趣的可以留言讨论下。不喜勿喷!