CLOSE_WAIT中的各种进程的未连接的TCP连接

我在10GBEnetworking(网卡是英特尔82599EB 10GBE SFI / SFP +)上连接了几台机器的集群,运行在Debian 6.0下,并且遇到挂起TCP连接的问题,处于CLOSE_WAIT状态。 我知道在理论上CLOSE_WAIT状态下的连接应该被应用程序明确地closures,但是在我的情况下,至less有两个不同的应用程序会产生这些挂起的连接,我认为这个问题是另一回事。


起初,这个问题是由Cassandra在“jsvc”进程下作为守护进程运行的。 Cassandra的一个节点(“服务器”)并没有closures连接,而是closures了连接的另一个节点(“客户端”)的一端。 之后,我运行“netperf”TCP_CRRtesting,并得到错误消息:

netperf -H 172.15.2.166 -t TCP_CRR -l -5 -D TCP连接/请求/响应testing从0.0.0.0(0.0.0.0)端口0 AF_INET到172.15.2.166(172.15.2.166)端口0 AF_INET:demo send_tcp_conn_rr:数据recv错误:连接重置由对等

在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
    最有可能的是,服务器应用程序没有正确closures
  2. 由于任何原因,如果您不确定连接属于哪个应用程序,
    使用lsof -n | grep CLOSE.WAIT lsof -n | grep CLOSE.WAIT
  3. 如果这是卡森德拉,你可能想检查
    这个StackOverflow的问题, cassandra打开的文件太多了