有一台测试服务器,上面放了N多的应用,这些应用都要连接zookeeper,有一天发现其中某个应用连接不上zookeeper的2181端口,但是其他的应用却能连接上,排除了程序的问题,开始分析这个问题。
先用telnet xxx.xxx.xxx.xxx 2181看看:
Trying xxx.xxx.xxx.xxx…
Connected to xxx.xxx.xxx.xxx.
Escape character is ‘^]’.
Connection closed by foreign host.
可以看到是连接上了,但是因为什么原因导致了连接被意外中断了。
再看一下连接zookeeper的连接数:
netstat -na|grep xxx.xxx.xxx.xxx:2181|wc -l
10
看到已经连接zookeeper的连接数为10,这个数字很特别啊,为什么刚好是10?难道zookeeper中有设置连接数为10的?通过查找文档,zookeeper还真有这个连接限制:
maxClientCnxns 这个在配置文件中假如不设置的话,默认连接是 10
于是设置 maxClientCnxns=100,并重启后问题解决。