各种进程中处于 CLOSE_WAIT 状态的未关闭 TCP 连接

各种进程中处于 CLOSE_WAIT 状态的未关闭 TCP 连接

我有一个由多台机器组成的集群,它们连接到 10GBE 网络(NIC 是 Intel 82599EB 10GBE SFI/SFP+),在 Debian 6.0 下运行,并且面临 CLOSE_WAIT 状态下 TCP 连接挂起的问题。我知道理论上 CLOSE_WAIT 状态下的连接应该由应用程序明确关闭,但在我的例子中,至少有两个不同的应用程序生成了这些挂起的连接,我认为问题出在其他方面。


最初,这个问题是由 Cassandra 在“jsvc”进程下作为守护进程运行时重现的。Cassandra 的一个节点(“服务器”)没有关闭发起此连接的另一个节点(“客户端”)一侧已关闭的连接。之后,我运行了“netperf”TCP_CRR 测试并收到错误消息:

netperf -H 172.15.2.166 -t TCP_CRR -l -5 -D TCP 连接/请求/响应测试从 0.0.0.0 (0.0.0.0) 端口 0 AF_INET 到 172.15.2.166 (172.15.2.166) 端口 0 AF_INET:演示 send_tcp_conn_rr:数据接收错误:对等方重置连接

172.15.2.166 计算机上的 TCP 连接处于 CLOSE_WAIT 状态,并且 Recv-Q 中出现奇怪的 1 个字节。

tcp 1 0 172.15.2.166:12865 172.15.2.161:42863 CLOSE_WAIT

我已将“ixgbe”驱动程序更新至最新的 3.9-NAPI,但此问题仍然存在,现在我想知道还有什么原因可能导致此问题?

答案1

  1. 您的记录表明,服务器看到了FIN来自RST客户端的
  2. 如果您出于任何原因不确定该连接属于哪个应用程序,
    请使用lsof -n | grep CLOSE.WAIT
  3. 如果这是 Cassendra,您可能需要查看
    这个 StackOverflow 问题,Cassandra 打开的文件过多

相关内容