zookeper 服务器上的连接太多

Too many connections on zookeper server

环境:HDP 2.6.4

Ambari – 2.6.1

3 动物园管理员服务器

23.1.35.185 - 是第一个zookeeper服务器的IP

大家好,

在第一个 zookeeper 服务器中,似乎即使关闭与 zookeeper 的连接也没有关闭,

这会导致从主机达到最大客户端连接数 - 我们在 zookeeper 配置中将 maxClientCnxns 设置为 60

因此,当新应用程序出现并尝试创建连接时,它失败了。

连接示例:

echo stat | nc 23.1.35.185 2181 

Latency min/avg/max: 0/71/399

Received: 3031 Sent: 2407

Connections: 67 

Outstanding: 622 

Zxid: 0x130000004d 

Mode: follower 

Node count: 3730

但过了一段时间后,当连接达到 ~70 时,我们看到了

echo stat | nc 23.1.35.185 2181

Ncat: Connection reset by peer.

而且我们还可以看到很多CLOSE_WAIT

java      58936       zookeeper   60u  IPv6 381963738      0t0  TCP Zookeper_server.sys54.com:eforward->zookeper_server.sys54.com:44983 (CLOSE_WAIT)

来自动物园管理员日志

2018-12-26 02:50:46,382 [myid:1] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@193]
    - Too many connections from /23.1.35.185 - max is 60

在ambari中我们也可以看到

Connection failed: [Errno 104] Connection reset by peer to zookeper_server.sys54.com.:2181

我必须说这不会发生在 zookeeper 服务器 2 和 3 上

注意 - 如果我们将 maxClientCnxns 增加到 300 ,它没有帮助,因为一段时间后我们获得更多的 300 个连接( CLOSE_WAIT )然后我们从日志

2018-12-26 02:50:49,375 [myid:1] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@193] - Too many connections from /23.1.35.187 - max is 300

所以有什么提示为什么连接是 CLOSE_WAIT 吗?

CLOSE_WAIT表示连接的本端收到了对端的FIN,但是OS在等待本端的程序真正关闭它的联系。

问题是您在本地计算机上的程序 运行 没有关闭套接字。这不是 TCP 调整问题。当程序保持连接打开时,连接可以(并且非常正确地)永远保持 CLOSE_WAIT

一旦本地程序关闭套接字,OS 可以将 FIN 发送到远程端,在您等待 FIN 的 ACK 时将您转换到 LAST_ACK。收到后,连接完成并从连接 table 断开(如果您的终端处于 CLOSE_WAIT,您不会以 TIME_WAIT 状态结束)。

有内核级别属性重用连接并减少CLOSE_WAIT时间。

我建议您按照本教程进行操作http://www.linuxbrigade.com/reduce-time_wait-socket-connections/

这应该可以解决您的问题。