代码之家  ›  专栏  ›  技术社区  ›  Judy

Zookeper服务器上的连接太多

  •  0
  • Judy  · 技术社区  · 6 年前

    环境: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.
    

    我们还可以看到许多人近距离等待

    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上

    注意-如果我们增加 Max Cclipse 对于300,这没有帮助,因为一段时间后,我们得到了更多的300个连接(关闭等待),然后我们从日志中看到

    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
    

    所以有什么提示为什么连接是关闭的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Saif Ahmad    6 年前

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

    问题是在本地计算机上运行的程序没有关闭套接字。它不是一个 TCP 调谐问题。连接可以(而且非常正确)保持在 关闭等待 当程序保持连接打开时。

    一旦本地程序关闭套接字,操作系统就可以将fin发送到远程端,远程端将您转换为 LAST_ACK 当你等待 ACK 鳍。一旦接收到,连接就完成,并从连接表中删除(如果您的端位于 关闭等待 你不会在 TIME_WAIT 状态)。

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

    我建议你遵循这个教程 http://www.linuxbrigade.com/reduce-time_wait-socket-connections/

    这可能会解决你的问题。

    推荐文章