Zookeper服务器上的连接过多

时间:2018-12-31 14:25:03

标签: apache-kafka apache-zookeeper ambari hdp

环境:HDP 2.6.4

安巴里– 2.6.1

3个Zookeeper服务器

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?

1 个答案:

答案 0 :(得分:1)

CLOSE_WAIT表示连接的本地端已从另一端收到FIN,但操作系统正在等待本地端的程序实际关闭其连接。

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

一旦本地程序关闭套接字,操作系统便可以将FIN发送到远程端,当您等待FIN的LAST_ACK时,该远程端会将您转换到ACK。接收到该消息后,连接完成并从连接表中删除(如果您的终端位于CLOSE_WAIT中,则您不会以TIME_WAIT状态结束)。

有一个内核级属性可以重用连接并减少CLOSE_WAIT时间。

我建议您遵循本教程http://www.linuxbrigade.com/reduce-time_wait-socket-connections/

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