我有一个由多台机器组成的集群,它们连接到 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
-
您的记录表明,服务器看到了
FIN
来自RST
客户端的 - 如果您出于任何原因不确定该连接属于哪个应用程序,
请使用lsof -n | grep CLOSE.WAIT
- 如果这是 Cassendra,您可能需要查看
这个 StackOverflow 问题,Cassandra 打开的文件过多